2012-06-29 2 views
6

У меня есть devexpress xtragrid с 40 колонками. Я сравниваю каждое значение ячейки с другим, и если оно отличается, я хочу изменить цвет фона ячейки. Я пытаюсь с GridViewInfo, но он принимает только столбцы, которые видны на экране. Но я хочу сделать для всех столбцов. (Не с RowCellStyle) У вас есть решение для этого? Спасибо!Как изменить цвет фона ячейки в сетке Devexpress?

ответ

4

Крючок на событие RowStyle вашего xtragrid.

private void maintainDataControl_RowStyle(object sender, RowStyleEventArgs e) 
{ 
    if (e.RowHandle >= 0) 
    { 
     GridView view = sender as GridView; 

     // Some condition 
     if((string)view.GetRowCellValue(
      e.RowHandle, view.Columns["SomeRow"]).Equals("Some Value")) 
     { 
      e.Appearance.BackColor = Color.Green; 
     } 
    } 
} 
+0

функция сравнения на кнопку .Как я могу назвать RowStyle событие? – Lavy

+0

Вы не можете сделать это при событии нажатия кнопки. вы должны обрабатывать либо «RowStyle», либо «CustomDrawCell». поместите их условие там и просто аннулируйте сетку после внесения изменений в эти данные на кнопке. –

+0

Я сделал это с помощью RowCellStyle. Спасибо за помощь! :) – Lavy

5

Вы должны обрабатывать CustomDrawCell вашего GridView, вот надрез кода, который меняет цвет в столбце Имя, на основании другого valoe столбца (возрастная колонка)

private void gridView_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e) 
    { 
     if (e.Column == colName) 
     { 
      var age = Convert.ToInt32(gridView.GetRowCellValue(e.RowHandle, colAge)); 
      if (age < 18) 
       e.Appearance.BackColor = Color.FromArgb(0xFE, 0xDF, 0x98); 
      else 
       e.Appearance.BackColor = Color.FromArgb(0xD2, 0xFD, 0x91); 
     } 
    } 

Успехов

Смежные вопросы