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

时间:2010-12-13 10:23:46

标签: c# asp.net gridview

我需要区分两个连续的细胞。

连续的每一个,如果它们具有不同的值,则在数据绑定时将值绑定到gridview。

所以,如果在第1行我有单元格“ABC”而在第2行我有单元格“CBA”。

我需要用不同颜色为每个细胞着色。

最好的方法是什么?

5 个答案:

答案 0 :(得分:13)

这称为条件格式

您可以在标记中启用RowDataBound事件

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

</asp:GridView>

并将其放入Code-Behind文件中。

protected void RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        if(e.Row.RowIndex == 0)     // This is row no.1
            if(e.Row.Cells[0].Text == "ABC")
                e.Row.Cells[0].BackColor = Color.Red;

        if(e.Row.RowIndex == 1)     // This is row no.2
            if(e.Row.Cells[0].Text == "CBA")
                e.Row.Cells[0].BackColor = Color.Green;
    }
}

答案 1 :(得分:4)

在页面的部分页面RowDataBound =“gridView1 DataBinding”中添加到gridview。然后添加事件处理程序codebehind:

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);
    }

最好的问候,迪马。

答案 2 :(得分:2)

如果我理解你的话,你想要改变一个单元格的颜色,这取决于它的价值。 如果这是正确的,你可以这样试试:

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
        }
    }
}

答案 3 :(得分:1)

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

答案 4 :(得分:0)

void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
        }
    }