2016-05-11 11 views
0

Ich habe eine Gridview mit den folgenden SpaltenGridview Zelle zurück Farbe unter der Bedingung basiert nicht funktioniert

enter image description here

Columns 5 Datum ist.

Spalten 6 ist Fehler.

Wenn der Fehler 0 oder null ist, wird die Zellenfarbe grün angezeigt. Wenn die Fehler nicht 0 oder nicht null sind, wird die Zellenfarbe rot angezeigt. Bis jetzt haben diese Bedingungen ich gemacht.

Meine Frage ist in den letzten drei Spalten, wenn das Datum nicht null ist, dann sollte die Zellenfarbe rot sein. Wie erreiche ich das?

mein Code wie folgt

if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     TableCell cell = e.Row.Cells[6]; 
     string Failures = cell.Text.ToString().Trim(); 
     string date = e.Row.Cells[5].ToString(); 
     if (Failures == "0" || Failures == "NULL") 
     { 
      cell.BackColor = Color.Green; 
     } 
     else 
     { 
      cell.BackColor = Color.Red; 
     } 

    } 

Antwort

0

ich diesen Code verwenden, meine Gridview Zelle Hintergrundfarbe
GridView.Rows[i].Cells[j].Style.Add("background-color", "white");
zu ändern hoffe ich, dass Wille hilft Ihnen,
Edit:

for (int i = 0; i < GridView.Rows.Count; i++) 
     { //if(GridView.Rows[i].Cells[5].Text!=null) //for date 
      if(GridView.Rows[i].Cells[6].Text == "0" || GridView.Rows[i].Cells[6].Text == "NULL") 
      { 
       GridView.Rows[i].Cells[6].Style.Add("background-color", "green"); 
      } 
      else 
       GridView.Rows[i].Cells[6].Style.Add("background-color", "red"); 
      } 
     } 
+0

Aber wie diese bestimmte Zeile zu wissen? – SJD

0

Handeln Sie das gerade GridView1_RowDataBound Ereignis für Ihre GridView.

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
      { 
      //Check if it is not header or footer row 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       string Failures =DataBinder.Eval(e.Row.DataItem, "YourColumnN°6Name").ToString().Trim(); 
       string date = DataBinder.Eval(e.Row.DataItem, "YourColumnN°5_Name").ToString().ToString(); 
       //Check your condition here 
       if (Failures == "0" || Failures == "NULL") 
        e.Row.BackColor = Drawing.Color.Green; 
       else 
        e.Row.BackColor = Drawing.Color.Red;    
      } 
      } 
0

Versuchen Sie folgendes:

protected void GridViewName_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     TableCell cell = e.Row.Cells[6]; 
     string Failures = cell.Text.ToString().Trim(); 
     string date = e.Row.Cells[5].ToString(); 
     if (Failures == "0" || Failures == "NULL") 
     { 
      cell.BackColor = Color.Green; 
     } 
     else 
     { 
      cell.BackColor = Color.Red; 
     } 

     DateTime dt; 
     if (DateTime.TryParse(date, out dt)) 
     { 
      e.Row.Cells[5].BackColor = Color.Red; 
     } 

    } 
} 
0

Im RowDataBound Fall, dass Sie Flags basierend auf der Zeilendatenquelle und nicht eine Neuinterpretation der Zellinhalte bestimmen sollte.

Ich würde auch vorschlagen, dass ein Datenbank-NULL-Wert nicht mit einem Status von "Gut" oder "Schlecht" überlagert werden sollte. Wenn eine Null einen Status "Gut" darstellt, sollte Ihre SELECT-Anweisung diesen Status widerspiegeln. Es sollte nicht der WebApp überlassen werden, Datenzustände zu ermitteln, da dies zu unterschiedlichen Interpretationen derselben Daten über verschiedene Seiten hinweg führen könnte.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DataRowView drv = (DataRowView) e.Row.DataItem; 

     Boolean StatusOK = (drv["Failure"] == DBNull.Value || (int) drv["Failure"] == 0); 
     Boolean HaveDate = (drv["Date"] != DBNull.Value); 

     e.Row.Cells[6].BackColor = (StatusOK && HaveDate ? Color.Green : Color.Red); 
    } 
} 
Verwandte Themen