根据条件更改GridView行的颜色

我想基于某些条件来更改gridview的特定行颜色,我正在使用ASP.NET与C#。 谢谢。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { e.Row.Attributes.Add("style", "cursor:help;"); if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Alternate) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='orange'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#E56E94'"); e.Row.BackColor = Color.FromName("#E56E94"); } } else { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='orange'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='gray'"); e.Row.BackColor = Color.FromName("gray"); } //e.Row.Cells[0].BackColor = Color.FromName("gray"); //e.Row.Cells[1].BackColor = Color.FromName("gray"); //e.Row.Cells[2].BackColor = Color.FromName("gray"); //e.Row.Cells[3].BackColor = Color.FromName("gray"); //e.Row.Cells[4].BackColor = Color.FromName("gray"); //e.Row.BorderWidth = 2; //e.Row.BorderColor = Color.FromName("#43C6DB"); } } 
 protected void DrugGridView_RowDataBound(object sender, GridViewRowEventArgs e) { // To check condition on integer value if (Convert.ToInt16(DataBinder.Eval(e.Row.DataItem, "Dosage")) == 50) { e.Row.BackColor = System.Drawing.Color.Cyan; } } 

为您的GridView创buildGridView1_RowDataBound事件。

 //Check if it is not header or footer row if (e.Row.RowType == DataControlRowType.DataRow) { //Check your condition here If(Condition True) { e.Row.BackColor = Drawing.Color.Red // This will make row back color red } } 

如果特定string(“TextToMatch”)出现在其中一列中,则此方法将修改背景颜色(深红色)和文本(白色):

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.Cells[8].Text.Equals("TextToMatch")) { e.Row.BackColor = System.Drawing.Color.DarkRed; e.Row.ForeColor = System.Drawing.Color.White; } } 

或者另一种方式来写它:

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.Cells[8].Text.Equals("TextToMatch")) { e.Row.Attributes.CssStyle.Value = "background-color: DarkRed; color: White"; } } 

或者,您可以将DataItem行转换为一个类,然后根据类属性添加条件。 这里是我用来将行转换为名为TimetableModel的类/模型的示例,然后在if语句中可以访问所有类字段/属性:

 protected void GridView_TimeTable_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.RowType == DataControlRowType.DataRow) { var tt = (TimetableModel)(e.Row.DataItem); if (tt.Unpublsihed ) e.Row.BackColor = System.Drawing.Color.Red; else e.Row.BackColor = System.Drawing.Color.Green; } } } 
 \\loop throgh all rows of the grid view if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value1") { GridView1.Rows[i - 1].ForeColor = Color.Black; } else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value2") { GridView1.Rows[i - 1].ForeColor = Color.Blue; } else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value3") { GridView1.Rows[i - 1].ForeColor = Color.Red; } else if (GridView1.Rows[i - 1].Cells[4].Text.ToString() == "value4") { GridView1.Rows[i - 1].ForeColor = Color.Green; }