Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于datatable值高亮显示gridview行_C#_Asp.net_Gridview_Datatable - Fatal编程技术网

C# 基于datatable值高亮显示gridview行

C# 基于datatable值高亮显示gridview行,c#,asp.net,gridview,datatable,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事件中,我想检查da

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

if(int.Parse(DataBinder.Eval(e.Row.DataItem,"Risk").ToString()) > 100)
    {
        e.Row.BackColor = Color.FromName("#FAF7DA");
    }
现在我的问题是,在我的rowdatabound事件中,我想检查datatable中的值,我需要突出显示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;
                    }
                }
            }
        }
    }
受保护的void OnRowDataBound(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{ 
DataTable dt=DataRepository.highlightRow();
string[]strInactive=dt.AsEnumerable().Select(行=>row.Field(“产品标识”)).ToArray();
foreach(gvProducts.Rows中的GridViewRow行)
{
对于(int i=0;i
例如:
在这里,datatable将只返回一列值,如10、20、20。然后,我需要在gridview中突出显示这些值的行。

您应该能够检查
e.Row.DataItem
以获得符合条件的值

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;
                    }
                }
            }
        }
    }
您可以在
RowDataBound
事件中执行类似操作:

if (e.Row.RowType == DataControlRowType.DataRow) {
  DataRowView drv = (DataRowView) e.Row.DataItem;

  if( drv("Risk") == <some condition> ) {
    e.Row.BackColor = Drawing.Color.Black // :)
  }
}
if(e.Row.RowType==DataControlRowType.DataRow){
DataRowView drv=(DataRowView)e.Row.DataItem;
如果(drv(“风险”)=){
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;
            }
        }
    }
private const System.Drawing.Color HIGHLIGHT=System.Drawing.Color.Yellow;
private const System.Drawing.Color NORMAL=System.Drawing.Color.White;
RowDataBound上受保护的void(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
DataTable dt=DataRepository.highlightRow();
string[]strInactive=dt.AsEnumerable().Select(行=>row.Field(“产品标识”)).ToArray();
foreach(strInactive中的var值)
{
e、 Row.BackColor=(e.Row.Cells[0]。Text==值)?高亮显示:正常;
}
}
}

我不知道您的数据表中有什么,所以我不知道您要测试什么。

您有什么问题?什么不起作用?@j.f.-我正在努力检查gridview中的datatable值。我突出显示了具有静态值且大于或小于的行。但这对我来说有点棘手。首先,你的代码不一定会浪费太多时间。因为1
DataTable dt=DataRepository.highlightRow()在每行上都被调用。2.foreach和for循环在每一行上运行。您能编辑您的问题并说出数据表的内容吗?你到底想和什么做比较?在某些情况下我需要付出什么?如何在gridview中检查datatable值。datatable是gridview的数据源吗?否datatable不是gridview的数据源。这是一个单独的连接,我正在与gridview源的datatable进行连接。我需要突出显示匹配的行。好的,谢谢您的快速回答。假设我的数据表返回三个值,如G-01、G-02、G-03。现在我需要检查gridview第一行中的这个值,并突出显示它们。Datatable值是动态的,它们会不断变化。我编辑了代码,使用表结果包含了一个
foreach
循环。这会让你达到你想要的目的吗?我觉得逻辑很完美,但行没有突出显示。这是ASP.NET中我不确定的部分。您是否有任何CSS或样式可能正在进行?如果是这样的话,您可能需要使用JavaScript来更新您的HTML。当我调试它时,它完全采用了值,而我在那个aspx上没有任何css或样式。