Ниже показан полный код обработчика события RowCreated, реализующего упомянутые правила:
protected void GridView1_RowCreated(object sender,
GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Получить значение титула вежливого обращения
// для создаваемого элемента.
string title = (string)DataBinder.Eval(e.Row.DataItem, "TitleOfCourtesy");
// Если титул - "Ms.", "Mrs.", или "Mr.",
// изменить цвета элемента.
if (title == "Ms." || title == "Mrs.")
{
e.Row.BackColor = System.Drawing.Color.LightPink;
e.Row.ForeColor = System.Drawing.Color.Maroon;
}
else if (title == "Mr.")
{
e.Row.BackColor = System.Drawing.Color.LightCyan;
e.Row.ForeColor = System.Drawing.Color.DarkBlue;
}
}
}
Во-первых, код проверяет, что создаваемый элемент — обычный, а не дополнительный. Если ни то, ни другое, это значит, что данный элемент — какой-то другой интерфейсный элемент вроде номера страницы, нижнего колонтитула или заголовка, и в этом случае делать ничего не нужно. Если же это — нормальный элемент, код извлекает значение поля TitleOfCourtesy из элемента привязанных данных и сравнивает его с жестко закодированными строчными значениями. На рис. 10.4 показана результирующая страница.
Совет. В этом примере используется метод DataBinder.Eval() для извлечения части информации из элемента данных, используя рефлексию. Альтернативно вы могли бы привести e.Row.DataItem к корректному типу (такому как EmployeeDetails для ObjectDataSource), DataRowView (для SqlDataSource в режиме DataSet) или DbDataRecord (для SqlDataSource в режиме DataReader). Тем не менее, подход DataBinder.Eval() работает во всех этих сценариях (ценой некоторого замедления).
Это не самый полезный пример использования события RowCreated, однако он демонстрирует, как можно обработать событие и прочесть важную информацию об элементе. Вы можете применять гораздо более впечатляющее форматирование для изменения представления страничных ссылок, добавления новых кнопок, отображения значений, которые хотите выделить специальными шрифтами и цветом, создания итоговых и промежуточных строк и многого другого.
предыдущая следующая страница оглавление
430