Выделите строку GridView при выполнении условия - PullRequest
7 голосов
/ 12 декабря 2011

Я использую VS2005 C# Server-side кодирование.

Мне любопытно узнать, что в VS2005 version возможно ли highlight строка в GridView при выполнении условия?Например, если столбец Risk хранится как high в базе данных для этой конкретной строки, строка будет highlighted in Red.

Возможно ли это?


Редактировать:

Текущий код:

protected void GridView1_OnRowDataBound(Object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.DataRow)
{
    // do your stuffs here, for example if column risk is your third column:
    if (e.Row.Cells[3].Text == "H")
    {
        e.Row.BackColor = Color.Red;
    }
}
}

Я предполагаю, что ячейка столбца начинается с 0, поэтому моя находится в ячейке 3. Но цвет по-прежнемуне меняется.

У кого-нибудь есть идеи?

Ответы [ 5 ]

11 голосов
/ 12 декабря 2011

Да, добавьте OnRowDataBound="yourGridview_RowDataBound" в сетку. Это событие запускается для каждой строки сетки.

В коде есть:

public void yourGridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // do your stuffs here, for example if column risk is your third column:
        if (e.Row.Cells[2].Text == "high")
        {
            e.Row.BackColor = Color.Red;
        }
    }
}
3 голосов
/ 12 декабря 2011

Использовать событие RowDataBound. В этом случае вы можете добавить CSS в зависимости от вашего состояния

 void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {

    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      // Logic for High
      if(e.Row.Cells[1].Text > 100)
      //set color
      e.Row.Attributes.Add("style", "this.style.backgroundColor = '#FFFFFF';");

    }

  }
1 голос
/ 12 декабря 2011

in RowDataBound try:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    // searching through the rows
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      if(int.Parse(DataBinder.Eval(e.Row.DataItem,"Risk").ToString()) > 100)
        {
            e.Row.BackColor = Color.FromName("#FAF7DA"); // is a "new" row
        }
    }
}
1 голос
/ 12 декабря 2011

Вы должны подписаться на событие RowDataBound сетки и перехватить строку, в которой в вашем столбце упоминается Risk as High, а затем установить BackColor строки для выбранного вами цвета выделения

 If (e.Row.RowType == DataControlRowType.DataRow)
 {
        //DataBinder.Eval(e.Row.DataItem,"Risk"))
        //if this is high then set the color
        e.Row.BackColor = Drawing.Color.Yellow
 }

MSDN Форматирование GridView на основе базовых данных

0 голосов
/ 29 декабря 2017
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.BackColor = Color.Yellow;

            Label l1 = (Label)e.Row.FindControl("lblage");
            if(Convert.ToInt32( l1.Text)>=30)
            {
                e.Row.BackColor = Color.Tomato;
            }

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...