Вы не можете сделать это в декларативной разметке.
Почти все декларативные свойства GridView
(включая GridView.RowStyle
) являются настройками уровня сетки, а не уровня строки. Кроме TemplateFields
они не являются связанными контейнерами данных, поэтому у них нет доступа к данным в их строках.
Если вы хотите сохранить эту логику в шаблоне .aspx, ваш единственный реальный вариант - использовать поля шаблона и манипулировать их содержимым:
<asp:TemplateField>
<ItemTemplate>
<span class="<%# ((string)Eval("property3")) == "NeedsAttention" ? "red" : string.Empty %>">
<%# Eval("property1") %>
</span>
</ItemTemplate>
</asp:TemplateField>
В зависимости от того, что вы хотите сделать, это может быть неудобно - у вас нет доступа к содержащему <td>
(или <tr>
в этом отношении), и вам придется повторить форматирование для каждой ячейки.
Класс GridView
делает все возможное, чтобы скрыть от вас детали HTML и стиля. В конце концов, вы могли бы создать GridView
управляющий адаптер , который даже не отображался бы как HTML-таблицы (Хотя вряд ли это может быть.)
Поэтому, даже если вы пытаетесь избежать этого, вам, вероятно, лучше всего с этим справиться в обработчике OnRowDataBound
- или используйте Repeater
(если это уместно).