Я хочу добавить дополнительный класс в GridView программно. Я знаю, что могу сделать это, используя следующий код:Добавление второго класса в строку gridview в RowDataBound
public void RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRow row = ((DataRowView)e.Row.DataItem).Row;
if (!row.Field<Boolean>("IsActive"))
{
e.Row.Attributes["class"] += "InActive";
}
}
и он отлично работает. Класс «IsActive» добавляется, однако, на чередующихся строк я в конечном итоге с этим HTML:
<tr class="gvAlternatingStyle" class="InActive"
onmouseover="gvMouseOver(this)"
onmouseout="gvMouseOut(this)" style="cursor:pointer;">
Два определения класса не то, что я хочу. Я бы предпочел иметь что-то вроде этого:
<tr class="gvAlternatingStyle InActive"
onmouseover="gvMouseOver(this)"
onmouseout="gvMouseOut(this)" style="cursor:pointer;">
который, конечно, более действителен.
Я не могу понять, где/как настроить этот html. Возможно, в OnPreRender(), но я не вижу, где. Может ли кто-нибудь дать мне указатель?
Я на самом деле просто реализовать что-то подобное (произошло для меня, когда я набрал этот вопрос), но мне все еще было интересно узнать, есть ли способ сделать это, не программируя вручную посторонний стиль :). Спасибо за быстрый ответ!! Я буду отмечать ваше мнение как ответ, если никто не придумает прямое решение вышеизложенного. –
Я думаю, что класс, определенный в 'AlternatingRowStyle-CssClass', добавляется позже, что происходит в событии' OnRowDataBound'. Я сделал быстрый тест с 'e.Row.Attributes.Remove (« class »);», а затем снова добавив новый класс, но это не сработало, класс по-прежнему добавлен. – VDWWD
Да, согласен. Все еще экспериментирует. Я посмотрел на него в OnPreRender, но классов еще нет. –