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

GridView RowDataBound事件设置背景色无效问题求助

解决ASP.NET GridView行背景色不生效的问题

问题根源在于你添加样式时使用了.NET服务器端的属性名BackColor,而HTML/CSS只识别标准CSS属性名,浏览器无法解析BackColor这个非标准属性——即便页面源码里显示了该样式,也不会生效。

直接修改方案:替换为CSS标准属性名

将代码中的BackColor替换为background-color(或驼峰式的backgroundColor,两种写法浏览器均支持):

修改后的后台代码:

protected void Gridview_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[1].Text == "0")
        {
            // 替换为CSS标准属性名
            e.Row.Style.Add("background-color", "yellow");
        }
        TextBox txbx = e.Row.FindControl("Txt_Criteria") as TextBox;
        // 同样替换属性名
        txbx.Style.Add("background-color", "yellow");
    }
}

修改后,页面源码中的样式会变成符合CSS规范的background-color:yellow;,浏览器就能正确渲染背景色。

更优方案:使用CSS类(推荐)

如果需要复用样式或更易于维护,建议定义CSS类后动态添加到控件上:

  1. 在页面<head>中添加CSS类:
<style>
.highlight-row {
    background-color: yellow;
}
.highlight-input {
    background-color: yellow;
}
</style>
  1. 修改后台代码,添加CSS类而非直接写内联样式:
protected void Gridview_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[1].Text == "0")
        {
            // 给行添加高亮类,若需保留原有类则用 += " highlight-row"
            e.Row.CssClass = "highlight-row";
        }
        TextBox txbx = e.Row.FindControl("Txt_Criteria") as TextBox;
        // 给输入框添加高亮类
        txbx.CssClass = "highlight-input";
    }
}

这种方式更符合前端开发规范,后续调整样式时无需修改后台代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:03:28