Infragistics UltraGrid (9.2) изменяет значение отображения ячейки без изменения базового источника данных - PullRequest
1 голос
/ 11 ноября 2011

У меня есть UltraGrid, привязанный к IList<MyDomainObject>. В MyDomainObject есть поле bool? isSomething. Проблема в том, что когда это поле имеет значение NULL, флажок в ячейке отображается как некий заполненный флажок, а не как флажок без флажка, как того хочет мой клиент. Поэтому в InitializeRow -eventhandler я меняю значение рассматриваемой ячейки на false, если ее значение равно нулю. Но это также меняет базовые данные в объекте MyDomainObject - что нежелательно.

Как я могу изменить отображаемое значение моего поля bool? isSomething без изменения значения в домене-объекте?

1 Ответ

2 голосов
/ 12 ноября 2011

Спасибо, Виджай.Свойство стиля столбца было установлено в значение по умолчанию.Это создает стиль флажка с тремя значениями.При установке стиля на флажок с двумя значениями 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;
    }
}
...