2010-09-17 2 views

ответ

3

Вы, вероятно, хотите использовать событие RowDataBound из GridView, что-то вроде этого:

<asp:GridView ID="grid1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource3" OnRowDataBound="ChangeRowColor"> 

protected void ChangeRowColor(object sender, GridViewRowEventArgs e) 
{ 
    if(((DataRow)e.Row.DataItem)[1] == .5) 
    { 
    e.Row.Cell[1].BackColor = Colors.Green; 
    } 
} 

В моем примере я предполагаю, что данные, используемые для заполнения сетки, - это DataRows (т. из данных), но по существу идея состоит в том, чтобы передать DataItem текущей строки любому типу объекта, к которому привязан, проверить значение требуемого свойства и затем установить BackColor соответствующей ячейки.

Вы также можете проверить свойство текста ячейки, но вам, возможно, придется выполнять дополнительный синтаксический анализ или что-то не получить от строки до любого значения, которое вы хотите сравнить.

1

Одним из решений является создание серверного метода, который вы можете вызвать во время привязки данных, который вернет имя класса css.

Привязать атрибут класса css к вызову этого метода и передать соответствующий элемент данных.

Это пример концепции, вам придется адаптировать ее для ваших целей.

... Css файл

.NegativeMoneyText 
{ 
    color: #FF0000; 
} 

... Aspx файл

<asp:Label ID="lblPaid" runat="server" CssClass='<%# getMoneyCssClass(Eval("PAID_AMOUNT").ToString()) %>' Text='<%# formatMoney(Eval("PAID_AMOUNT").ToString()) %>'></asp:Label> 

... Код за

public string getMoneyCssClass(string amount) 
{ 
    if (!string.IsNullOrEmpty(amount)) 
    { 
     double val = double.Parse(amount); 
     if (val < 0) 
      return "NegativeMoneyTextCss"; 
    } 
    return return "PositiveMoneyTextCss"; 
} 
Смежные вопросы