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

如何在ASP.NET GridView中按患者动态设置分组颜色?

按患者交替设置GridView行背景色问题

我有如下所示的GridView:
GridView示例

需要实现按患者动态交替行颜色:患者1的所有记录为灰色(不管记录条数),患者2的所有记录为蓝色,患者3的所有记录为灰色,患者4的所有记录为蓝色,以此类推。不同患者的颜色必须交替切换,不受单患者记录条数影响。

使用环境: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++;
    }    
}

问题分析与解决方案

原代码的核心问题是:每次检测到患者变化时仅将ColorToggle设为true,同患者的下一行又会把ColorToggle设为false,导致同一患者的行颜色交替,不符合需求。

正确的逻辑应该是:每次切换患者时才切换颜色标记,同一患者的所有行使用同一种颜色。

修改后的代码如下:

// 声明页面级变量,用于记录上一个患者的MRN和当前颜色状态
private string _lastMRN = string.Empty;
private bool _useGrayColor = true; // 初始第一个患者用灰色

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

        // 如果当前患者和上一个不同,切换颜色标记
        if (!string.Equals(currentMRN, _lastMRN, StringComparison.Ordinal))
        {
            _useGrayColor = !_useGrayColor;
            _lastMRN = currentMRN;
        }

        // 根据颜色标记设置行背景色
        e.Row.BackColor = _useGrayColor ? System.Drawing.Color.Gray : System.Drawing.Color.LightBlue;
    }
}

关键说明

  1. 使用页面级变量_lastMRN和_useGrayColor,确保在RowDataBound的多次调用中保留状态
  2. 仅当患者MRN变化时,才切换颜色标记_useGrayColor
  3. 同一患者的所有行,都会使用当前的颜色标记设置背景色,保证同患者行颜色一致
  4. 初始_useGrayColor设为true,第一个患者会用灰色,后续患者自动交替颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:55:16