【发布时间】:2014-11-25 16:02:13
【问题描述】:
我正在尝试根据网页行中单元格的值更改表格行的背景颜色。基本上,我想通过查看存储在表中的值是否为空来检查是否已关闭案例。如果表格中存储了日期,我希望该行变为灰色。
当我使用它时,它会将所有行变成灰色,而不是那些没有空值的行。我检查了表的值,它们确实包含空值。 caseClosedDate 列中存储的值是数据类型的日期。
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 语句中遇到类似问题,则该表使用“& nbsp;”填充空值。 最终答案是:
.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";
}
}
【问题讨论】:
-
1.
row["caseClosedDate"] != null总是满意吗?当您期望 null 时,它可能是一个空字符串。 2. 你正在做的更好的方法是在行上设置一个类,然后在 CSS 中设置颜色。关注点分离... -
是的,我已经创建了专门为空但仍显示灰色背景的行。 css 类是否仍需要对列数据进行条件检查?
-
是的,但是如果将来您想将背景颜色更改为绿色怎么办?您必须更改 C# 代码。这是一个风格问题...
-
我同意@im1dermike 的观点。设计一直在变化,您不想为此重新编译。考虑到这一点,我更新了我的答案,为您提供两全其美的体验。
-
谢谢大家,这很有意义。我将更改我的代码。