我正在尝试根据网页上行内单元格的值更改表格行的背景颜色。基本上,我想通过查看存储在表上的值是否为空来检查案例是否已关闭。如果表格上存有日期,我希望该行变为灰色。
当我使用它时,它会将所有行变为灰色而不是没有空值的行。我检查了表的值,它们确实包含空值。存储在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";
}
}
答案 0 :(得分:0)
您不需要循环遍历表,行中单元格的值将在偶数参数中提供给您。
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";
答案 1 :(得分:0)
如果要将数据绑定到gridview,请在OnRowDataBound事件中使用它。
if (DataBinder.Eval(e.Row.DataItem, "caseClosedDated") != null)
{
e.Row.BackColor = Color.Gray;
}