有条件地更改网格视图上的行颜色
本文关键字:颜色 视图 网格 有条件 | 更新日期: 2023-09-27 18:32:00
我正在尝试根据网页上行内单元格的值更改表格行的背景颜色。基本上,我想通过查看表上存储的值是否为空来检查案例是否已关闭。如果表格上存储了日期,我希望该行变为灰色。
当我使用它时,它会将所有行变成灰色,而不是没有空值的行。我已经检查了表的值,它们确实包含空值。案例关闭日期列中存储的值是数据类型日期。
protected void CaseList_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
//table is generated through a stored procedure
DataTable dt = mytable;
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (DataRow row in dt.Rows)
{
//uses the column string name
if(row["caseClosedDate"] != null)
{
e.Row.BackColor = Color.Gray;
}
}
}
}
编辑如果其他人对 if 语句有类似的问题,该表会用" "填充空值。最终答案是:
.case-closed { background-color:gray; }
}
protected void CaseList_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
//table is generated through a stored procedure
DataTable dt = mytable;
if (e.Row.Cells[6].Text.Trim() != " ")
{
e.Row.CssClass = "case-closed";
}
}
您不需要遍历表格,行中单元格的值在偶数参数中给出给您。
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Change the number here to refer to the column you are checking
if(string.IsNullOrEmpty(e.Row.Cells[1].Text))
{
e.Row.BackColor = Color.Gray;
}
}
但是,正如@im1dermike在评论中指出的那样,最好使用 CSS 来实现着色。因此,为颜色创建一个新的CSS类:
.case-closed { background-color: gray; }
无需在代码中设置颜色,只需设置 CSS 类:
e.Row.CssClass = "case-closed";
如果要将数据绑定到网格视图,请在 OnRowDataBound 事件中使用此选项。
if (DataBinder.Eval(e.Row.DataItem, "caseClosedDated") != null)
{
e.Row.BackColor = Color.Gray;
}