如何在gridview中动态设置颜色代码组?

问题描述 投票:0回答:1

我有一个如下所示的网格视图...

我需要动态地改变每个患者的网格视图颜色。 患者 1 应呈灰色(2 条记录) 患者 2 应交替显示蓝色(2 条记录) 患者 3 应交替显示灰色(2 条记录) 患者 4 应交替出现蓝色(2 条记录)

并非所有患者都有 2 条记录。有些人只有一个,而其他人可能有两个以上,但我需要颜色在不同的患者之间交替。

我不知道该怎么做...请有人帮忙吗?

我正在使用 VS 2019、C#、asp.net(这是 MVC 之前的版本)。

谢谢, 尼内尔

我试过这个:

protected void grdPatientList_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        NewMRN = e.Row.Cells[2].Text;

        if (counter == 1)
        {
            LastMRN = NewMRN;
        }

        if (LastMRN != NewMRN)
        {
            ColorToggle = true;
            mrnvalue = e.Row.Cells[2].Text;
        }
        else
        {
            ColorToggle = false;
        }

        if (ColorToggle == true)
        {
            e.Row.BackColor = System.Drawing.Color.Gray;
        }
        else
        {
            e.Row.BackColor = System.Drawing.Color.LightBlue;
        }
        LastMRN = NewMRN;
        counter++;
    }    

}

c# gridview colors alternate
1个回答
0
投票

您的

LastMRN
变量不会延续到下一个事件回调函数中。您可以读取前一行的患者编号和颜色,并使用这些值来确定当前行的颜色。

protected void grdPatientList_RowDataBound(object sender, GridViewRowEventArgs e)
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if(e.Row.RowIndex == 0)
        {
            e.Row.BackColor = System.Drawing.Color.Gray;
        }
        else
        {
            System.Drawing.Color prevColor = GridView1.Rows[e.Row.RowIndex - 1].BackColor;
            string prevNumber = GridView1.Rows[e.Row.RowIndex - 1].Cells[2].Text;
            if (e.Row.Cells[2].Text == prevNumber)
            {
                e.Row.BackColor = prevColor;
            }
            else
            {
                e.Row.BackColor = prevColor == System.Drawing.Color.Gray ? System.Drawing.Color.LightBlue : System.Drawing.Color.Gray;
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.