我有一个如下所示的网格视图...
我需要动态地改变每个患者的网格视图颜色。 患者 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++;
}
}
您的
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;
}
}
}
}