2013-02-26 3 views
1

В приложении asp.net я использую управление сеткой в ​​том, что я привязываю данные к label, который находится в grid-view.
Если данных пуст то цвет строки должен быть красным
Если нет, я имею в виду, если данные есть, чтобы связать затем строку в зеленом. Это мой код:Цвет фона в строке в gridview?

<asp:TemplateField HeaderText ="Holiday Region"> 
    <ItemTemplate > 
     <asp:Label ID ="lblholdareg" runat ="server" Text ='<%# Eval("Holidaregion") %>' > 
     </asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

использование данных в строке данных –

ответ

2

Вы можете сделать это на rowdatabound функции gridview следующим

protected void RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //change it according your cell number or find element 
     if(e.Row.Cells[0].Text != "") 
      e.Row.BackColor = Color.Green; 
     else 
      e.Row.BackColor = Color.Red; 
    } 
} 
+0

Почему проголосовали? –

+0

Я отменил ваш downvote, не уверен, почему вы были DV'd. Ваше решение не является полным, но оно направлено в правильном направлении. Другой отвечает на весь заданный цвет ярлыка, который не соответствует требованиям OP. –

+0

привет @ Şhȇkhaṝ, но событие не стреляет ..., – Anjali

0

Попробуйте что-то вроде этого

<asp:TemplateField HeaderText ="Holiday Region"> 
    <ItemTemplate > 
    <asp:Label ID ="lblholdareg" runat ="server" 
    CSSClass='<%# (String.IsNullOrEmply(Eval("Holidaregion")))?"red:green" %>' 
    Text ='<%# Eval("Holidaregion") %>' > 
    </asp:Label> 

    </ItemTemplate> 
</asp:TemplateField> 

Edit:

Вместо борьбы с видом сетки инлайн и код позади питания, просто использовать JQuery и добиться того же в стороне клиента

+0

ki попытается дать вам знать murali –

+0

где вы устанавливаете 'row-color'? –

+0

@ Шехар, надеюсь, вы знаете об использовании CSS. Здесь я добавил в Label, что тоже можно применить в строке. Управляйте стилем с помощью классов CSS –

0
if(e.Row.RowType == DataControlRowType.DataRow) 
{ 
    Control l = e.Row.FindControl("Label1"); 
    ((Label)l).BackColor = System.Drawing.Color.Red; 
} 
+0

он хочет установить «цвет строки» –

+0

Правильно, но в этой строке у него есть ярлык, поэтому он хочет установить цвет фона метки, а не цвет строки ... – coder

+0

Я не см. в вопросе о ярлыке метки. –

2

Вам нужно обрабатывать событие RowDataBound, попасть в пункт e.Row и назначить либо CSS класса или напрямую установить цвет фона. Я предпочитаю устанавливать класс CSS, чтобы вы могли изменить его рендеринг без последующей перекомпиляции.

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"> 
    <Columns> 
     <asp:TemplateField HeaderText="Holiday Region"> 
      <ItemTemplate> 
       <asp:Label ID="lblholdareg" runat="server" Text='<%# Eval("Holidaregion") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

И код-позади, я должен был предположить, что Вы использовали DataTable в качестве источника данных, обновить код, чтобы соответствовать вашей структуры данных:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    System.Data.DataRow row = (System.Data.DataRow)e.Row.DataItem; 
    if (row["Holidaregion"] == null || row["Holidaregion"].ToString().Trim().Length == 0) 
    { 
     e.Row.CssClass = "row-empty"; 
    } 
    else 
    { 
     e.Row.CssClass = "row-full"; 
    } 
} 
Смежные вопросы