2013-09-16 19 views
2

我試圖添加基於第三列中繼器控制。添加的CssClass在運行時

我的標記是值的CSS-類表格單元格...

 <ItemTemplate> 
      <tr id="row"> 
      <td><%# DataBinder.Eval(Container.DataItem, "Won")%></td> 
      <td><%# DataBinder.Eval(Container.DataItem, "Lost")%></td> 
      <td><%# DataBinder.Eval(Container.DataItem, "Result")%></td> 
      </tr> 
     </ItemTemplate> 

如果Result的價值是1,向Won表格單元添加一個css類。

如果Result的值是2,添加一個CSS類的Lost表格單元格

我使用ItemCreated事件Repeater控件的嘗試,並得到了完全喪失!

有什麼想法嗎?

回答

4

您必須使用中繼器的ItemDataBound方法。

編輯: 當你想更改類的<td>,你得屬性runat="server"添加到它。你 標記可能看起來像下面:

<asp:Repeater ID="rptMyRepeater" runat="server" OnItemDataBound="rptMyRepeater_ItemDataBound"> 
    <HeaderTemplate> 
     <table> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td><%# DataBinder.Eval(Container.DataItem, "Won") %> </td> 
      <td><%# DataBinder.Eval(Container.DataItem, "Lost") %> </td> 
      <td runat ="server" id="tdResult"><%# DataBinder.Eval(Container.DataItem, "Result") %> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
    </FooterTemplate> 
</asp:Repeater> 

和代碼:

protected void rptMyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     HtmlTableCell tdResult = e.Item.FindControl("tdResult") as HtmlTableCell; 
     if (DataBinder.Eval(e.Item.DataItem, "Result").ToString() == "1") 
     { 
      tdResult.Attributes["class"] = "Won"; 
     } 
     else if (DataBinder.Eval(e.Item.DataItem, "Result").ToString() == "2") 
     { 
      tdResult.Attributes["class"] = "Lost"; 
     } 
    } 
} 
+0

您好,先生,您的幫助表示衷心感謝,但我還是失去了一些東西。您的解決方案增加了類的標籤控制和而不是父母​​。我希望將此課程添加到承載標籤控制的父級​​。我錯過了什麼嗎? – OrElse

+0

檢查編輯答案。 – afzalulh