根据数据表值突出显示gridview行

本文关键字:显示 gridview 数据表 | 更新日期: 2023-09-27 17:50:36

我需要根据datatable中的值突出显示gridview行。我已经高亮了一些值,如果任何特定的单元格值满足某些条件,那么我可以使用此代码高亮显示。

if(int.Parse(DataBinder.Eval(e.Row.DataItem,"Risk").ToString()) > 100)
    {
        e.Row.BackColor = Color.FromName("#FAF7DA");
    }

现在我的问题是,在我的rowdatabound事件中,我想检查数据表中的值,我需要突出显示gridview中的值。

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        { 
            DataTable dt = DataRepository.highlightRow();
            string[] strInactive = dt.AsEnumerable().Select(row => row.Field<string>("product_id")).ToArray();
            foreach (GridViewRow row in gvProducts.Rows)
            {
                for (int i = 0; i < gvProducts.Columns.Count; i++)
                {
                    if (gvProducts.Rows[0].Cells[0].Text.Contains("how to pass array values"))
                    {
                        e.Row.BackColor = System.Drawing.Color.Red;
                    }
                }
            }
        }
    }

为例:这里,数据表将只返回一个列值,如10,20,20。然后我需要在gridview中突出显示这些值的行。

根据数据表值突出显示gridview行

您应该能够检查e.Row.DataItem的值是否符合您的标准

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

if (e.Row.RowType == DataControlRowType.DataRow) {
  DataRowView drv = (DataRowView) e.Row.DataItem;
  if( drv("Risk") == <some condition> ) {
    e.Row.BackColor = Drawing.Color.Black // :)
  }
}

也许这就是你正在寻找的:

    private const System.Drawing.Color HIGHLIGHT = System.Drawing.Color.Yellow;
    private const System.Drawing.Color NORMAL = System.Drawing.Color.White;
    protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataTable dt = DataRepository.highlightRow();
            string[] strInactive = dt.AsEnumerable().Select(row => row.Field<string>("product_id")).ToArray();
            foreach (var value in strInactive)
            {
              e.Row.BackColor = (e.Row.Cells[0].Text == value) ? HIGHLIGHT : NORMAL;
            }
        }
    }

我不知道你的DataTable里面有什么,所以我不知道你想测试什么