2009-11-24 74 views
2

我有一个ASP.net 的GridView该吐出数据的三列:(ORDERNUMBER,OrderStatus,和订购日期)。基于设置的GridView值ItemStyle前景色上行/列值

我想设置OrderStatus Field Value = RED IF the status = "Cancelled"

我不知道如何来看待这一领域的价值输出的每一行并确定状态将被取消......那么,如果它被设置颜色到RED。

ASP.net的GridView:

<asp:GridView ID="gvOrders" 
        runat="server" 
        AutoGenerateColumns="False" 
        GridLines="None" 
        AllowPaging="true" 
        CssClass="mGrid" 
        PagerStyle-CssClass="pgr" 
        AlternatingRowStyle-CssClass="alt" > 
      <Columns> 
      <asp:BoundField DataField="OrderNumber" HeaderText="OrderNumber" SortExpression="OrderNumber" /> 
      <asp:BoundField DataField="OrderStatus" HeaderText="OrderStatus" SortExpression="OrderStatus" /> 
      <asp:BoundField DataField="OrderDate" HeaderText="OrderDate" SortExpression="OrderDate" /> 
      </Columns> 
     </asp:GridView> 

C#数据绑定:

protected void navOrders_Onclick(object sender, BulletedListEventArgs e) 
{ 
    switch(e.Index) 
    { 
     case 0: //Orders 
      DataTable dt = Procedures.GetOrderData(); 

      gvOrders.DataSource = dt; 
      gvOrders.DataBind(); 

      break; 
    } 

} 

任何建议,将不胜感激。

感谢一如既往,

回答

2

您可以设置OrderStatus列的前景色在RowDataBound事件。您可以指定表格单元格的索引,在您的情况下,OrderStatus的索引为1.

protected void gvOrders_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (e.Row.Cells[1].Text == "Cancelled") 
     { 
      e.Row.Cells[1].ForeColor = System.Drawing.Color.Red; 
     } 
    } 
} 
+0

我能够通过添加RowType检查来获得此功能....谢谢! 如果(e.Row.RowType == DataControlRowType.DataRow) { 如果(e.Row.Cells [1]。文本== “取消”) { e.Row.Cells [1] .ForeColor = System.Drawing.Color.Red; } } – scarpacci 2009-11-25 03:33:43

+0

我已将行类型检查添加到答案,谢谢。 – Phaedrus 2009-11-25 03:42:05