1

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

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

4

1 回答 1

2

谢谢维杰。列的样式属性设置为默认值。这会产生一个三值复选框样式。通过将样式设置为双值复选框,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;
    }
}
于 2011-11-12T15:51:47.240 回答