2

3 番目の列の値に基づいてテーブル セルに 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-class を追加します。Won

の値Resultが 2 の場合、CSS クラスをLost表のセルに追加します。

リピーター制御のイベントを使ってみた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 に答える