2

我正在尝试根据第三列的值向表格单元格添加一个 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>

如果 的值为1,则向表格单元格Result添加一个 css 类。Won

如果 的值为2,则在表格单元格Result中添加一个 css-classLost

我尝试使用ItemCreated中继器控件的事件并完全迷失了!

请问有什么想法吗?

4

1 回答 1

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";
        }
    }
}
于 2013-09-16T20:50:23.007 回答