Изменить цвет ячейки на разные значения - Gridview - PullRequest
9 голосов
/ 13 декабря 2010

Мне нужно различить две последовательные ячейки.

Каждая в строке, если они имеют разные значения, когда данные привязывают значения к виду сетки.

Итак, если в строке 1У меня есть ячейка "ABC", и в строке 2 у меня есть ячейка "CBA".

Мне нужно покрасить каждую ячейку другим цветом.

Как лучше всего это сделатьэто?

Ответы [ 5 ]

13 голосов
/ 13 декабря 2010

Это называется условным форматированием

Вы можете включить событие RowDataBound в разметке

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

</asp:GridView>

И поместите это в свой код-файл.

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;
    }
}
4 голосов
/ 13 декабря 2010

Добавьте к вашему сеточному виду в html-части страницы OnRowDataBound = "gridView1_DataBinding".А затем добавьте код обработчика событий:

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 голосов
/ 13 декабря 2010

если я вас правильно понял, вы хотите изменить цвет ячейки, в зависимости от ее значения.если это правильно, вы можете попробовать это так:

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
        }
    }
}
1 голос
/ 13 декабря 2010

вы можете сделать это на событии привязки строки к сетке. Сохраните предыдущий ряд в viewstate или session и сопоставьте его со следующим рядом. Если он не совпадает, измените цвет, иначе не измените.

0 голосов
/ 06 июня 2013
void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...