是否可以使复选框列接受0和1以确定是否应该检查它?我从数据库获取gridView的dataSource,其中一个列使用0或1作为true和false。我需要这个0和1表示在gridView中选中或未选中。我知道我可以创建一个循环来遍历dataTable中的每一条记录,并将值更改为选中或未选中,但实际上有数千个条目,所以这样做可能会很慢,尤其是在要使用的机器上它。是否可以这样强制gridView复选框列?
感谢您的帮助。
答案 0 :(得分:2)
来自: customize RepositoryItemCheckEdit display
我认为实现此目标的最佳方法是将列类型更改为Int32
(例如),并将0, 1, 2
值映射到false, true, indeterminate
状态
RepositoryItemCheckEdit.ValueUnchecked,
RepositoryItemCheckEdit.ValueChecked,
RepositoryItemCheckEdit.ValueGrayed属性。
请确保您的数据库字段(绑定到此列)是字符串类型字段,并包含“0”,“1”和“2”值。 如果是整数字段,请按如下方式修改代码:
repchk.ValueChecked = CType(2, Integer)
repchk.ValueUnchecked = CType(0, Integer)
repchk.ValueGrayed = CType(1, Integer)
请尝试此解决方案并告知我们您的结果。
<强>参考强>:
How to use RepositoryItemCheckEdit in XtraGrid Column for a dataTable column containing only "True"/"False" values.
xtragrid - Checkbox column
Set checkbox cheched in RepositoryItemCheckEdit
RepositoryItemCheckEdit
答案 1 :(得分:0)
在一般情况下,您可以使用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);
}
}