在一个命令中更改几个GridView单元格的颜色

时间:2011-11-04 09:02:34

标签: asp.net gridview

如何一次更改多个单元格的BackColor?而不是像这样编写代码:

e.Row.Cells[2].BackColor = Color.Azure;
e.Row.Cells[3].BackColor = Color.Azure;
e.Row.Cells[4].BackColor = Color.Azure;
e.Row.Cells[5].BackColor = Color.Azure;
e.Row.Cells[6].BackColor = Color.Azure;

也许有一个命令可以同时为几个单元格着色,例如:

e.Row.Cells[from 2 to 6].BackColor = Color.Azure;

我不想改变整行的颜色,只需要改变2到6的单元格。

2 个答案:

答案 0 :(得分:1)

如果您知道要着色的范围,可以在for循环中进行。

for (int i = 1;i < 7;i++)
{
e.Row.Cells[i].BackColor = Color.Azure
}

不是最优雅的,但它会完成这项工作。

答案 1 :(得分:0)

您可以通过创建扩展方法来完成此操作。

public static class GridViewRowExtensions
{
    public static void ChangeBackColorOfCells(this GridViewRow row, int[] cells)
    {
        foreach(int i in cells)
        {
            row.Cells[i].BackColor = Color.Azure;
        }
    }
}

现在,如果你想改变单元格1,3和4的背景颜色,你可以这样做:

e.Row.ChangeBackColorOfCells(new[] {1,3,4});

注意:如果您想要更改非线性单元格的颜色并在应用程序的多个位置使用它,则此方法仅是首选方法。否则,您可以按照RowDataBound处理程序本身的 Lareau 建议循环。