2013-09-05 2 views
0
ID  Subject  Marks 
1000 English  65 
1000 Physics  70 
1000 Chemistry  75 
1001 English  78 
1001 Physics  71 
1001 Chemistry  60 
1002 English  85 
1002 Physics  80 
1002 Chemistry  79 

Я хочу указать цвета фона (альтернативным способом) на основе значения ID. Если данные для 1000, то я хотел бы дать 1000 записей цвет фона, например, голубой, затем для записей с идентификатором 1001, другого цвета, а затем снова для 1002, дать тот же цвет фона (или может быть другой).Цвет фона в сетке devexpress - сетка winforms

Я использую этот ниже код, однако, я не получаю цвета фона правильно. Я получаю все строки в сетке с цветом фона как голубой.

Любые мысли?

private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) 
     { 
        ColumnView View = dataGrid.MainView as ColumnView; 
         DevExpress.XtraGrid.Columns.GridColumn col = View.Columns["ID"]; 
         for (int i = 0; i <= gridView1.DataRowCount - 1; i++) 
         { 
          if (gridView1.GetRowCellValue(i, col) != gridView1.GetRowCellValue((i + 1), col)) 
          { 
           e.Appearance.BackColor = Color.LightCyan; 
          } 
         if (i == gridView1.DataRowCount) break; 
         } 

     } 
+0

Можете ли вы описать, какой результат вы получаете точно? –

+0

Добавленный в вопрос, он дает тот же цвет для всех строк. – Sharpeye500

ответ

1

RowStyle событие уже поднят для каждой строки - http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsGridGridView_RowStyletopic

RowStyleEventArgs е (e.RowHandle) также может быть отрицательным при работе с http://documentation.devexpress.com/#WindowsForms/CustomDocument695 групп рядов

Каждая итерация Вашего цикла была используя e.RowHandle без проверки отрицательных значений, - который менял задний цвет всего столбца.

Я изменил ваш код ниже на версию, которая создает чередующийся ряд строк строк на четных строках на основе столбца ID.

 private void dataGrid_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) 
    { 
     if (e.RowHandle >= 0) 
     { 
      ColumnView View = dataGrid.MainView as ColumnView; 
      DevExpress.XtraGrid.Columns.GridColumn col = View.Columns["ID"]; 
      if (Convert.ToInt32(gridView1.GetRowCellValue(e.RowHandle, col)) % 2 == 0) 
      { 
       e.Appearance.BackColor = Color.LightCyan; 
      } 
      else 
      { 
       e.Appearance.BackColor = Color.White; 
      } 
     } 
    } 
+0

lol snap! Гораздо более подробно, чем у меня, правда, приятно. –

0

было некоторое время, так как я работал с DX вещи, но это событие выглядит как-то, что поднял на строку и так, что ваш код на самом деле делает это перекрашивать несколько раз - я бы предположил, что это, возможно, часть проблема.

Проверить эту ссылку, он показывает, как это сделать: http://documentation.devexpress.com/#windowsforms/DevExpressXtraGridViewsGridGridView_RowStyletopic

AS вы увидите в примере они дают, вы можете обратиться к текущей строки в этом обработчике, и вам не нужно в цикле все строки.

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