根据数据表值

时间:2015-05-22 19:57:18

标签: c# asp.net gridview datatable

我需要根据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中突出显示这些值的行。

2 个答案:

答案 0 :(得分:2)

您应该能够检查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 // :)
  }
}

答案 1 :(得分:0)

也许这就是你要找的东西:

    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中有什么,所以我不知道你要测试什么。