C# 更改不同值上的单元格颜色-Gridview

C# 更改不同值上的单元格颜色-Gridview,c#,asp.net,gridview,C#,Asp.net,Gridview,我需要区分两个连续的单元格 当数据绑定值到gridview时,行中的每个值(如果值不同) 因此,如果第1行有单元格“ABC”,第2行有单元格“CBA” 我需要用不同的颜色给每个单元格上色 执行此操作的最佳方法是什么?您可以在gridview的rowdatabound事件上执行此操作。将上一行保留在viewstate或session中,并将其与下一行匹配。如果不匹配,请更改颜色,否则不要更改。这称为条件格式 可以在标记中启用RowDataBound事件 <asp:GridView ID="g

我需要区分两个连续的单元格

当数据绑定值到gridview时,行中的每个值(如果值不同)

因此,如果第1行有单元格“ABC”,第2行有单元格“CBA”

我需要用不同的颜色给每个单元格上色


执行此操作的最佳方法是什么?

您可以在gridview的rowdatabound事件上执行此操作。将上一行保留在viewstate或session中,并将其与下一行匹配。如果不匹配,请更改颜色,否则不要更改。

这称为条件格式

可以在标记中启用RowDataBound事件

<asp:GridView ID="gridview1" runat="server" OnRowDataBound="RowDataBound">

</asp:GridView>

如果我没弄错的话,你想改变单元格的颜色,这取决于它的值。 如果这是正确的,您可以这样尝试:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if ((Label)e.Row.Cells[0].FindControl("ValueHoldingControl").Text == "ABC")
        {
            //Coloring the cell
        }
    }
}

将页面OnRowDataBound=“gridView1\u数据绑定”的html部分添加到gridview中。然后添加事件处理程序代码隐藏:

protected void gridView1_DataBinding(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.RowType != DataControlRowType.DataRow) return;

        var c = e.Row.FindControl("IdOfControl") as Label;
        if(c != null)
        {
            if (c.Text == "ABC")
                e.Row.BackColor = GetColor("Gray");

            if (c.Text == "BCA")
                e.Row.BackColor = GetColor("Green");
        }
    }

    private Color GetColor(string color)
    {
        return Color.FromName(color);
    }

致以最诚挚的问候,Dima。

此解决方案有效,使用viewstate获取最后一行值。谢谢。这个解决方案通过稍微调整代码对我有效。我没有使用if(e.Row.RowIndex==0),因为我的gridview总是返回1行。我还使用for循环遍历gridview中的所有单元格
void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
        }
    }
void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
        }
    }