Как я могу изменить цвет фона ячейки сетки, основываясь на условном выражении? - PullRequest
3 голосов
/ 30 июня 2010

Ладно, я явно не задал Google правильный запрос, или я бы уже выяснил.Я надеюсь, что кто-то на этом форуме может мне помочь.

Итак, у меня есть данные, к которым я добавляю строки на основе устройства чтения данных, которое получает информацию из SQL-запроса, выполненного по базе данных.Все идет нормально.Теперь один из этих столбцов называется «анализ», и мне нужно, чтобы его цвет фона был зеленым, если сопоставляются два предыдущих столбца, и красным цветом.

Если я не могу коснуться цвета фона, яЯ хотел бы вставить специальный символ, любой javascript, который не интерпретируется как текст.

Проще говоря, я бы хотел, чтобы css контролировал вид сетки из codebehind.Я смотрел и смотрел безрезультатно.Я нашел этого парня, но я не проверял, работает ли его решение на веб-сайте ASP.Net/C#.Есть идеи?

Ответы [ 2 ]

3 голосов
/ 30 июня 2010

В событии GridView_RowDataBound получите ячейку, для которой вы хотите изменить задний цвет, установите цвет ячейки, если ваше условие проверено как истинное.

/// <summary>
/// Handles gridview row data bound event.
/// </summary>
/// <param name="sender">Sender Object</param>
/// <param name="e">Event Argument</param>
protected void Gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    // We don’t want to apply this to headers.
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        try
        {
            //your data-object that is rendered in this row, if at all required.
            //Object obj = e.Row.DataItem;

            //find the right color from condition
            string color = condition ? "#ff9900" : "some-other-color";

            //set the backcolor of the cell based on the condition
            e.Row.Cells[4].Attributes.Add("Style", "background-color: " + color + ";");
        }
        catch
        {
        }
    }
}
0 голосов
/ 27 января 2015
 protected void GVKeywordReport_RowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DataRow pr = ((DataRowView)e.Row.DataItem).Row;
                int oldPos = Convert.ToInt32(pr["oldposition"]);
                int newPos = Convert.ToInt32(pr["newposition"]);
                GVKeywordReport.HeaderRow.Cells[3].Text = txtfrmdate.Text;
                GVKeywordReport.HeaderRow.Cells[4].Text = txtEndDate.Text;

                GVKeywordReport.HeaderRow.BackColor = ColorTranslator.FromHtml("#B3B300");
                e.Row.Cells[0].BackColor = ColorTranslator.FromHtml("#B3B300");
                e.Row.Cells[5].BackColor = ColorTranslator.FromHtml("#FFFFFF");

                if (oldPos == newPos)
                {
                    e.Row.BackColor = ColorTranslator.FromHtml("#FF950E");
                    e.Row.Cells[6].Text = "No Change";
                }
                else if (oldPos > newPos)
                {
                    e.Row.BackColor = ColorTranslator.FromHtml("#FFFFCC");
                    e.Row.Cells[6].Text = "Improved";
                }
                else  

                {
                    e.Row.BackColor = ColorTranslator.FromHtml("#FF0000");
                    e.Row.Cells[6].Text = "Decreased";
                }
               // e.Row.Cells[0].BackColor = ColorTranslator.FromHtml("#7DA647");
            }
        }
...