我有一个绑定到IList<MyDomainObject>
的UltraGrid。在MyDomainObject中有一个字段bool? isSomething
。问题是当此字段为空时,单元格中的复选框显示为填充复选框的类型,而不是我客户想要的未选中复选框。因此,在InitializeRow
- eventhandler中,如果其值为null,则将有问题的单元格的值更改为false。但这也改变了MyDomainObject对象中的底层数据 - 这是不可取的。
如何在不更改域对象中的值的情况下更改字段bool? isSomething
的显示值?
答案 0 :(得分:2)
谢谢Vijay。 列的样式属性设置为“默认”。这会产生三值复选框样式。通过将样式设置为双值复选框,null显示为false。
private readonly List<string> _nullableBoolColumns;
private void OnInitializeLayout(object sender, InitializeLayoutEventArgs e)
{
foreach (var band in e.Layout.Bands)
{
foreach (var column in band.Columns)
{
if(column.DataType == typeof(bool?))
{
_nullableBoolColumns.Add(column.Key);
}
}
}
}
private void OnInitializeRow(object sender, InitializeRowEventArgs e)
{
foreach (string column in _nullableBoolColumns)
{
e.Row.Cells[column].Style = ColumnStyle.CheckBox;
}
}