2009-11-24 6 views
2

J'ai un ASP.net GridView qui crache sur trois colonnes de données: (OrderNumber, OrderStatus et OrderDate).Set GridView Valeur ItemStyle ForeColor basée sur la ligne/colonne Valeur

Je veux régler le OrderStatus Field Value = RED IF the status = "Cancelled"

Je ne sais pas comment regarder la valeur de ce champ pour chaque ligne de la sortie et de déterminer si l'état est annulé ... alors si elle est définie la couleur à 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# DataBinding:

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

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

      break; 
    } 

} 

Toutes les suggestions seraient grandement appréciés.

Merci comme toujours,

Répondre

2

Vous pouvez définir la couleur avant de la colonne OrderStatus en cas RowDataBound. Vous pouvez spécifier l'index d'une cellule de table, dans votre cas, le OrderStatus aurait un indice de 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

J'ai pu obtenir ce travail en ajoutant le RowType Check .... merci! if (e.Row.RowType == DataControlRowType.DataRow) {if (e.Row.Cells [1] .Text == "Cancelled") { e.Row.Cells [1] = .ForeColor System.Drawing.Color.Red; } } – scarpacci

+0

J'ai ajouté le contrôle de type de ligne à la réponse, merci. – Phaedrus

Questions connexes