Infragistics UltraGrid (9.2) изменяет отображаемое значение ячейки без изменения базового источника данных.

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

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


person Andreas    schedule 11.11.2011    source источник
comment
Каково значение вашего свойства стиля столбца флажка?   -  person VSS    schedule 11.11.2011
comment
Это похожее обсуждение может вам помочь: news.infragistics.com/forums/ p/1607/12828.aspx   -  person VSS    schedule 11.11.2011
comment
Спасибо, Вия, ваш вопрос в стиле колонки помог мне найти решение, но мне не разрешено публиковать его в моем собственном вопросе еще через несколько часов.   -  person Andreas    schedule 11.11.2011
comment
Рад узнать, что у вас есть решение @AndreasExchange, я думаю, вы сможете опубликовать свой ответ для полного понимания.   -  person VSS    schedule 11.11.2011


Ответы (1)


Спасибо, Виджай. Свойство стиля столбца было установлено по умолчанию. Это создает стиль флажка с тремя значениями. Если для стиля установить флажок с двумя значениями, значение null отображается как ложное.

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;
    }
}
person Andreas    schedule 12.11.2011