2011-11-11 64 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; 
    } 
} 
相關問題