2016-05-11 9 views
0

私はこのリピータを別のリピータに持っています。私がやりたい何ダイナミックに割り当てられたIDを持つネストされたリピータのdivにクラスを追加または追加しますか?

<asp:Repeater ID="rpDB_item" runat="server" OnItemDataBound="rpDB_item_ItemDataBound"> 
    <ItemTemplate> 
     <div class="row anj" id="ncollapse<%# ((((RepeaterItem)Container.Parent.Parent).ItemIndex)) %>" > 
     ... 
     </div>            
    </ItemTemplate> 
</asp:Repeater> 

.collapsedid=ncollapse(x)と行のクラスに追加されます。たとえば、複数のdivがあり、id=ncollapse4などがあります。コードビハインド(C#)の.collapsedクラスを持つdivのクラスをどのように追加しますか?または、これはaspxページのクラスインラインセットの方が良いでしょうか?私は定義文としてスイッチを使用することを好むだろう。なぜなら、sStatusができるオプションがいくつかあるからである。

私は、(常にnullであるように思われる)の背後にあるコードで nc.Attributes["class"] = "collapsed" を設定するが、ncにnull参照を取得
HtmlGenericControl nc = (HtmlGenericControl)(e.Item.FindControl("ncollapse"+((((RepeaterItem)e.Item.Parent.Parent).ItemIndex).ToString())));

を試してみました。同様に、

<div class="row anj <%# switch (DataBinder.Eval(Container.DataItem,"sStatus").ToString()) 
{ case "OFFLINE": case "RECOVERY_PENDING": case "UNKNOWN": 
     Response.Write("collapsed"); 
     break; 
    default: 
     Response.Write(""); 
     break; 
};%> id="<%# (DataBinder.Eval(Container.DataItem,"sStatus").ToString() == "OFFLINE" ? "n" : "ncollapse"+((((RepeaterItem)Container.Parent.Parent).ItemIndex).ToString())) %>"> 

これは私にswitchのエラーを与えています。私がどこに行くか、次にどこに向かうかわからない。思考?

答えて

0

おそらくあなたのaspxの構文を取得する方法がありますが、それはそれの価値があるのですか?それはほとんど読めるものではありません。このロジックをコードの背後に移動し、マークアップから呼び出すことをお勧めします。書込みが容易で、読みやすく、管理が簡単です。ページの背後にある

コード:

protected string getRowCollapsedClass(String sStatus) 
{ 
    switch (sStatus) 
    { 
     case "OFFLINE": 
     case "RECOVERY_PENDING": 
     case "UNKNOWN": 
      return "collapsed"; 
     default: 
      return String.Empty; 
    } 
} 

そして、マークアップは本当に簡単になる:id値について同様に

<div class='row anj <%# getRowCollapsedClass(Eval("sStatus").ToString()) %>' 

。インデックスを2番目のパラメータとして渡すことを忘れないでください。

+0

これは私の最高の選択肢かもしれません。私はそれを見る。ただし、復帰句が復帰に代わるため、復帰句は使用されないか、必要になるため、復帰句は必要ありません。 –

+0

@ user992069、あなたは正しいですが、両方の "休憩"を削除しました – Andrei

+0

私にKISSを思い出させるためのThnaks - Keep It Simple Solution。それは完全に動作します。今すぐアコーデオンの残りの部分を取得し、クラス作業をトグルする –

関連する問題