2012-06-29 37 views
6

Tôi có một xtragrid devexpress với 40 cột. Tôi so sánh từng giá trị ô với nhau và nếu nó khác thì tôi muốn thay đổi màu nền ô. Tôi thử với GridViewInfo nhưng nó chỉ mất các cột có thể nhìn thấy trên màn hình.Nhưng tôi muốn làm cho tất cả các cột. (Không phải với RowCellStyle) Bạn có giải pháp cho điều đó không? Cảm ơn bạn!Làm thế nào để thay đổi màu nền của một ô trong Devexpress Grid?

Trả lời

4

Móc vào sự kiện RowStyle của xtragrid của bạn.

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

Các so sánh chức năng là vào một nút .Làm thế nào tôi có thể gọi RowStyle sự kiện? – Lavy

+0

Bạn không thể thực hiện việc này trên sự kiện nhấp chuột vào nút. bạn phải xử lý 'RowStyle' hoặc' CustomDrawCell'. đặt điều kiện của họ ở đó và chỉ đơn giản là vô hiệu hóa lưới điện sau khi thực hiện thay đổi cho dữ liệu đó trên nút .. –

+0

Tôi đã thực hiện nó với RowCellStyle.Thanks để được giúp đỡ! :) – Lavy

5

Bạn cần phải xử lý các CustomDrawCell của GridView của bạn, đây là một snip mã mà thay đổi màu của cột Name, dựa trên một valoe cột khác (cột tuổi)

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); 
     } 
    } 

Chúc may mắn

Các vấn đề liên quan