【问题标题】:How to change Gridview's row color based on a specific cell value? Asp.net如何根据特定的单元格值更改 Gridview 行颜色? ASP.NET
【发布时间】:2017-08-02 18:36:51
【问题描述】:

我现在浏览了几十个网站和帖子,我找不到任何“正确”的东西。

我只想根据特定的单元格值在我的 Datatable/GridView 中用红色绘制一行。

请帮帮我:( . . . . . .

for (int i = 0; i < TheFinalTable.Rows.Count; i++)
        {
            TheLevel = myUsers[i, 0];

            if (TheLevel == "2" && TheFinalTable.Rows[i][4].ToString() == myUsers[i, 1])
            {
                Gridview1.Rows[i].ForeColor = System.Drawing.Color.LightGreen;
            }
            if (TheLevel == "3" && TheFinalTable.Rows[i][4].ToString() == myUsers[i, 1])
            {
                Gridview1.Rows[i].ForeColor = System.Drawing.Color.Red;

            }
        }

“MyUsers”是一个字符串数组,包含级别和ID。

            Level  |  id

       1  |   2       64


       2  |   3       23

“TheFinalTable”按此顺序包含以下内容: 邮件、姓名、姓氏、电话、ID、租金、LastLog。


刚刚注意到,当涉及到第二个 if(这是真的)时,它还说“索引超出范围”。

主要问题是这样的:

如何根据行的一个单元格值或仅根据行号为特定行设置不同的颜色?

希望尽快收到你们的来信。

保重。

【问题讨论】:

    标签: asp.net gridview colors datatable datatables


    【解决方案1】:

    在你页面的加载方法中订阅网格的RowDataBound事件:

    this.GridView1.RowDataBound += GridView1_RowDataBound; 
    

    只要该行绑定到数据,它就会调用您的处理程序。这是您将在其中更改背景颜色的事件处理程序:

    private void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       //make sure it is not the header row
       if(e.Row.RowType == DataControlRowType.DataRow)
       {
          // whatever your condition
          if(e.Row.Cells[0].Text == "Whatever")
          {
             e.Row.BackColor = Drawing.Color.Red // This will make row back color red
          }
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      相关资源
      最近更新 更多