是否可以让复选框列接受 0 和 1 来确定是否应选中?我从数据库中获取 gridView 的数据源,其中一列使用 0 或 1 作为真假。我需要这个 0 和 1 来表示在 gridView 中选中或未选中。我知道我可以循环遍历 dataTable 中的每条记录并将值更改为已检查或未检查,但实际上有数千个条目,因此这样做可能会很慢,尤其是在要使用的机器上它。是否可以以这种方式强制 gridView 复选框列?
谢谢您的帮助。
是否可以让复选框列接受 0 和 1 来确定是否应选中?我从数据库中获取 gridView 的数据源,其中一列使用 0 或 1 作为真假。我需要这个 0 和 1 来表示在 gridView 中选中或未选中。我知道我可以循环遍历 dataTable 中的每条记录并将值更改为已检查或未检查,但实际上有数千个条目,因此这样做可能会很慢,尤其是在要使用的机器上它。是否可以以这种方式强制 gridView 复选框列?
谢谢您的帮助。
From: 自定义RepositoryItemCheckEdit显示
我认为实现此目标的最佳方法是将列类型更改为Int32
(例如)并通过RepositoryItemCheckEdit.ValueUnchecked、
RepositoryItemCheckEdit.ValueChecked、
RepositoryItemCheckEdit.ValueGrayed 属性将0, 1, 2
值映射到false, true, indeterminate
状态。
请确保您的数据库字段(绑定到此列)是字符串类型字段,并且包含“0”、“1”和“2”值。如果它是一个整数字段,请修改您的代码如下:
repchk.ValueChecked = CType(2, Integer)
repchk.ValueUnchecked = CType(0, Integer)
repchk.ValueGrayed = CType(1, Integer)
请尝试此解决方案并告知我们您的结果。
参考:
如何在 XtraGrid 列中为仅包含“True”/“False”值的 dataTable 列使用 RepositoryItemCheckEdit。
xtragrid - 复选框列
设置复选框在 RepositoryItemCheckEdit
RepositoryItemCheckEdit中检查
在一般情况下,您可以使用Unbound Columns完成此任务(将一种类型的列转换为另一种类型的列):
using DevExpress.XtraGrid.Views.Base;
//...
gridControl1.DataSource = new List<DataObj> {
new DataObj{ ID=0, intFlag=0 },
new DataObj{ ID=1, intFlag=1 },
new DataObj{ ID=2, intFlag=0 }
};
gridView1.PopulateColumns();
gridView1.Columns["intFlag"].Visible = false;
gridView1.Columns.Add(new DevExpress.XtraGrid.Columns.GridColumn()
{
FieldName = "boolFlag",
Caption = "Flag",
UnboundType = DevExpress.Data.UnboundColumnType.Boolean,
Visible = true
});
gridView1.CustomUnboundColumnData += gridView1_CustomUnboundColumnData;
//...
void gridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e) {
if(e.Column.FieldName == "boolFlag") {
if(e.IsGetData)
e.Value = (int)gridView1.GetRowCellValue(e.ListSourceRowIndex, "intFlag") == 1;
if(e.IsSetData)
gridView1.SetRowCellValue(e.ListSourceRowIndex, "intFlag", (bool)e.Value ? 1 : 0);
}
}