c# - ASP.NET Gridview 不会更改某些行的背景颜色
问题描述
我正在尝试根据其中一个单元格中的值更改 gridview 行的颜色。然而,它只是部分起作用。这是代码:
protected void attn_list_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.Cells[4].Text == "P") //change the colour of rows
{
e.Row.BackColor = Color.FromName("#CCDDCC");
}
else if (e.Row.Cells[4].Text == "L")
{
e.Row.BackColor = Color.FromName("#C5DAFC");
}
else if (e.Row.Cells[4].Text == "E")
{
e.Row.BackColor = Color.FromName("#FFCC66");
}
else if (e.Row.Cells[4].Text == "U")
{
e.Row.BackColor = Color.FromName("FFCECE");
}
else if (e.Row.Cells[4].Text == "N")
{
e.Row.BackColor = Color.FromName("EDC9FF");
}
if (e.Row.Cells[5].Text == "Yes")
{
e.Row.Cells[5].ForeColor = Color.FromKnownColor(KnownColor.Red); //if EL, set colour of font as red
}
}
我尝试通过System.Diagnostic.Debug.Writeline("A")
输入else if (e.Row.Cells[4].Text=="N")
语句来测试条件,结果它打印了“A”,这意味着它实际上满足了条件。只是我不知道为什么颜色不会改变......
提前致谢
解决方案
好吧,代码越多,我们浏览的越多!
因此,将上面转换为:
if (e.Row.RowType == DataControlRowType.DataRow)
{
string sColor = "";
switch(e.Row.Cells[4].Text)
{
case "P": sColor = "#CCDDCC"; break;
case "L": sColor = "#C5DAFC"; break;
case "E": sColor = "#FFCC66"; break;
case "U": sColor = "FFCC66"; break;
case "N": sColor = "EDC9FF"; break;
}
if (sColor != "")
e.Row.BackColor = Color.FromName(sColor);
if (e.Row.Cells[5].Text == "Yes")
{
e.Row.Cells[5].ForeColor = Color.FromKnownColor(KnownColor.Red); //if EL, set colour of font as red
}
}
嗯,确实看起来您缺少某些颜色的“#”。
另外,请注意我们如何检查数据绑定是否实际上正在处理数据行,标题和其他类型的“行”被扔到该例程中,因此我们也应该(需要)检查行类型。
但是,到目前为止,看起来“# 不见了。
推荐阅读
- javascript - 声明的变量返回“未定义”
- heroku - 将域重定向到 Heroku 上托管的应用程序
- c# - Unity3d - 获取旋转对象的游戏对象高度
- node.js - 当嵌套数组为空时,$lookup 和 $unwind 不给出任何结果
- javafx - 从选项卡窗格中的 main.java 加载锚窗格
- javascript - 根据所选选项更改画布尺寸
- php - 如何获取以逗号分隔的 DB 列中的单词列表并将它们与用户输入进行比较?
- django - Django 表单,其中包含使用嵌套(optgroup)显示的其他两个表的相关数据
- javascript - Chrome - 性能监视器 - DOM 节点不断堆叠
- android - 使用选项卡更改片段和工具栏