更改DataGridView行的颜色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改DataGridView行的颜色相关的知识,希望对你有一定的参考价值。
我遇到onDataRowBound的问题。似乎它将颜色放在单元格[0]的整个列上。其他细胞上有值,但它仍然为我的细胞着色。这是我的代码。
protected void GridUserMessage_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (String.IsNullOrWhiteSpace(e.Row.Cells[0].Text))
{
e.Row.BackColor = System.Drawing.Color.Red;
}
}
}
这有什么问题?
答案
添加else
块,将单元格的颜色设置为白色(或默认情况下网格具有的其他颜色)
protected void GridUserMessage_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (String.IsNullOrWhiteSpace(e.Row.Cells[0].Text))
{
e.Row.BackColor = System.Drawing.Color.Red;
}
else
{
e.Row.BackColor = System.Drawing.Color.White;
}
}
}
编辑:我认为CSS样式将是更好的方法来做到这一点。在您的标记中,将CSS类设置为您的行,并在RowDataBound
事件中根据需要设置另一个类。像这样的东西:
在标记中定义“正常”样式
<asp:GridView runat="server" RowStyle="normal-row" ...>
并在你的RowDataBound
方法中设置另一个类,如果单元格值为空字符串,如下所示:
e.Row.CssClass = "red-row";
另一答案
您正在检查Cell [0]值,如果您要更改后端数据库存储过程并重新排列选择列表中的列名,该怎么办,例如,您正在
之前
SELECT Id,FirstName,LastName FROM EMPLOYEE
在您/其他人将其更改为之后
SELECT Id,LastName,FirstName FROM EMPLOYEE
您的代码将很容易崩溃,因此最好检查该行的DataItem以查找具有名称的值,并根据您可以做出决定。查看从代码重写的代码。
protected void GridUserMessage_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Check database column has value or not.
if(String.IsNullOrEmpty(Convert.ToString(DataBinder.Eval(e.Row.DataItem, "ColumnNameOfDataYouWantToCheck")))
{
e.Row.BackColor = System.Drawing.Color.Red;
}
}
}
以上是关于更改DataGridView行的颜色的主要内容,如果未能解决你的问题,请参考以下文章
如何根据条件更改 DataGridView 的行颜色以检查日期是不是过期