C# 基于datatable值高亮显示gridview行
我需要根据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
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或样式。