0

サーバーでLinqを使用しています。リストを次のように入力します

selected MenuId=3;     
ul_HeaderMenu.DataSource = data.TABLE_MENUS.ToList();
ul_HeaderMenu.DataBind();

このクライアントコード

<asp:ListView ID="ul_HeaderMenu" runat="server" ClientIDMode="Static">
    <ItemTemplate >
        <li class="li-HeaderMenu"  runat="server"  ><%# Eval("Name") %>
             <div class="TopMenuActive"></div>
        </li>
    <ItemTemplate>
</asp:ListView>

サーバーに構築しているliにクラスを追加する必要があります。このように考える人もいます

selected MeduId=3;     
ul_HeaderMenu.DataSource = data.TABLE_MENUS.ToList();
ul_HeaderMenu.DataBind();
ul_HeaderMenu.ElementAt[3]AddClass('test');

私はliにクラスを追加する方法を見つけました。

4

2 に答える 2

0

ListView は、li 要素ではなく、ItemTemplate セクションで定義されたアイテムで構成されます。したがって、インデックスによって ListView から要素を取得する場合、クラスを追加する前にまず li を見つける必要があります。FindControlしたがって、 li を取得するには、アイテムに対してメソッドを使用する必要があります。

ここで、いくつか問題があります。

ElementAtListView にはメソッドがありません。Itemsコレクションにはメソッドがありますが、それでも、ul_HeaderMenu.Items[3]インデックスで要素を取得するために使用します。

メソッドを使用する場合FindControlは、Li を取得するために FindControl に渡す ID を ItemTemplate 内の li に追加する必要があります。

AddControlメソッドが存在しない場合、Attributesli でコレクションを使用してクラス属性を変更する必要があります。ただし、クラスをすでにそこに残しておきたいので注意が必要です。そのため、文字列を連結する必要がありますが、同じクラスを複数回追加したくないため、ヘルパー メソッドを作成するのが最善です。文字列を受け取り、クラスを追加して返す AddClass 。

これらはいつでも実行できますが、通常はItemDataBoundイベントを使用することをお勧めします。

最後に、好きな規則を自由に使用できますが、個人的には大文字と小文字の規則がわかりにくいと思います。Microsoft の提案については、こちらを参照してください。

于 2013-08-18T10:18:08.947 に答える