通过按行数据类型交替设置gridview行背景颜色

时间:2017-08-30 13:35:06

标签: c# asp.net gridview rowdatabound alternating

我有一个GridView,我列出了客户公司的价值观。以网格列出公司名称和值为例。我想为所有公司1 的行提供浅灰色背景颜色,然后为公司2 提供白色的行,然后返回浅灰色,用于公司3 的行,并像这样交替。

公司1 12

公司1 15

公司1 18

公司2 25

公司2 78

公司2 109

公司3 66

公司3 1

这可以简单地在_RowDataBound事件中完成,如果是这样,怎么办?

2 个答案:

答案 0 :(得分:0)

我设法使用了这个问题

alternate color gridview rows based on change of cell value asp.net

在c#中创建自己的解决方案。所以基本上,创建两个全局变量。然后在_RowDatabound中执行以下

int customerCompanyID = Convert.ToInt32(dr["IRPCustomerID"]);

 if (customerCompanyID != this._trafficSourceGridCurrentCompanyID)
            {
                if (this._trafficSourceGridGroupingCssClass == 
"BackGround2")
                {
                    this._trafficSourceGridGroupingCssClass = "BackGround1";
                }
                else
                {
                    this._trafficSourceGridGroupingCssClass = "BackGround2";
                }

                this._trafficSourceGridCurrentCompanyID = customerCompanyID;                    
            }

            e.Row.CssClass = _trafficSourceGridGroupingCssClass;

答案 1 :(得分:0)

RowDataBound事件中,您可以执行以下操作:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    // check if its not a header or footer row
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // get value from first cell of gridview
        string companyName = e.Row.Cells[0].Text;

        switch (companyName)
        {
            case "Company 1":
                e.Row.BackColor = System.Drawing.Color.LightGray;
                break;
            case "Company 2":
                e.Row.BackColor = System.Drawing.Color.White;
                break;
            case "Company 3":
                e.Row.BackColor = System.Drawing.Color.LightGray;
                break;
            default:
                break;
        }
    }
}