You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET GridView 部分行按单元格值设置背景色不生效问题

问题根因

  • 方法调用错误:Color.FromName() 仅支持传入系统预定义的颜色名(如"Pink"、"Blue"),无法解析十六进制格式的色值,你需要用ColorTranslator.FromHtml()方法来解析十六进制色值。
  • 色值格式不规范:U和N对应的两个十六进制色值开头缺失#标识符,就算用对解析方法也会报错。
  • 缺行类型判断:现有代码没有过滤表头、表尾、空行等非数据行,极端场景下可能出现索引越界报错。

修正后代码

protected void attn_list_RowDataBound(object sender, GridViewRowEventArgs e)
{
    // 仅处理数据行,过滤表头、表尾等其他行类型
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[4].Text == "P") 
        {
            e.Row.BackColor = ColorTranslator.FromHtml("#CCDDCC");
        }
        else if (e.Row.Cells[4].Text == "L")
        {
            e.Row.BackColor = ColorTranslator.FromHtml("#C5DAFC");
        }
        else if (e.Row.Cells[4].Text == "E")
        {
            e.Row.BackColor = ColorTranslator.FromHtml("#FFCC66");
        }
        else if (e.Row.Cells[4].Text == "U")
        {
            // 补全色值前的#标识符
            e.Row.BackColor = ColorTranslator.FromHtml("#FFCECE");
        }
        else if (e.Row.Cells[4].Text == "N")
        {
            // 补全色值前的#标识符
            e.Row.BackColor = ColorTranslator.FromHtml("#EDC9FF");
        }
        if (e.Row.Cells[5].Text == "Yes")
        {
            e.Row.Cells[5].ForeColor = Color.Red;
        }
    }
}

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:39:02