中继器控制。在运行时添加CssClass

时间:2013-09-16 17:49:16

标签: asp.net css repeater

我正在尝试根据第三列的值

向表格单元格添加一个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,则将css-class添加到Won表格单元格。

如果Result的值为2,则将css-class添加到Lost表格单元格

我尝试使用转发器控件的ItemCreated事件并完全丢失了!

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您必须使用repeater的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";
        }
    }
}