DevExpress Gridview - 根据特定条件格式化C#中的行

时间:2012-11-09 04:37:57

标签: c# devexpress

我正在使用DevExpress GridView并通过C#代码绑定数据。

我的要求是根据我在代码逻辑中执行的计算来更改行颜色。

我想遍历可用的所有行,如果行单元格值与条件的结果匹配,我需要更改颜色。

我在网上看到了示例和示例源,但似乎没有任何东西指向我解决问题。他们中的大多数使用XAML代码或使用DataBinding或在DataBound等期间。我使用inotifyvaluechange不太舒服。

期待您的支持和建议。

3 个答案:

答案 0 :(得分:2)

尝试使用DevExpress Gridview

using DevExpress.XtraGrid.Views.Grid;

private void gridView1_RowStyle(object sender, 
DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) {
   GridView View = sender as GridView;
   if(e.RowHandle >= 0) {
      string category = View.GetRowCellDisplayText(e.RowHandle, View.Columns["Category"]);
      if(category == "Beverages") {
         e.Appearance.BackColor = Color.Salmon;
         e.Appearance.BackColor2 = Color.SeaShell;
      }            
   }
}

<强>输出

enter image description here

答案 1 :(得分:1)

private void grvAssesse_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
  if (e.RowHandle >= 0)
  {
    GridView View = sender as GridView;        
    if (Condition)
    {
      e.Appearance.ForeColor = Color.Red;
    }
  }
}

您需要全局设置条件,在此条件的基础上,网格将为每个行加载执行此事件。

有关详细信息,请参阅: GridView

答案 2 :(得分:0)

您可以处理HtmlRowPrepared事件以更改行的颜色。

下面的

是可以帮助您的示例:

   protected void ASPxGridView1_HtmlRowPrepared(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableRowEventArgs e) {
        if (e.RowType != GridViewRowType.Data) return;                    
            e.Row.BackColor = System.Drawing.Color.LightCyan; // Changes The BackColor of ENTIRE ROW
            e.Row.ForeColor = System.Drawing.Color.DarkRed; // Change the Font Color of ENTIRE ROW
    }

您还可以设置一些条件,以便只有少数行会被着色,例如:

 protected void ASPxGridView1_HtmlRowPrepared(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableRowEventArgs e) {

    if (e.RowType != GridViewRowType.Data) return;       
     int VALUE = Convert.ToInt32(e.GetValue("COLUMNNAME"));
          if (VALUE < 20)          
       {
                e.Row.BackColor = System.Drawing.Color.LightCyan; // Changes The BackColor of ENTIRE ROW
                e.Row.ForeColor = System.Drawing.Color.DarkRed; // Change the Font Color of ENTIRE ROW
        }
}