Infragistics UltraGrid(9.2)更改单元格显示值而不更改基础数据源

时间:2011-11-11 09:52:31

标签: infragistics ultragrid

我有一个绑定到IList<MyDomainObject>的UltraGrid。在MyDomainObject中有一个字段bool? isSomething。问题是当此字段为空时,单元格中的复选框显示为填充复选框的类型,而不是我客户想要的未选中复选框。因此,在InitializeRow - eventhandler中,如果其值为null,则将有问题的单元格的值更改为false。但这也改变了MyDomainObject对象中的底层数据 - 这是不可取的。

如何在不更改域对象中的值的情况下更改字段bool? isSomething的显示值?

1 个答案:

答案 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;
    }
}