2011-11-11 36 views
1

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

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

+0

什么是您的复选框列样式属性的值是什么? – VS1

+0

这是一个类似的讨论,它可能会帮助你:http://news.infragistics.com/forums/p/1607/12828.aspx – VS1

+0

感谢Vija,你的“专栏式问题”让我得到了解决方案,但是我不允许在几个小时内发布给我自己的Q. – Andreas

回答

2

谢谢维杰。 列的style属性设置为Default。这会产生一个三值复选框样式。通过将样式设置为双值复选框,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; 
    } 
} 
相关问题