2012-02-16 26 views
0

:もちろんネストされたASP.NET ListViewコントロール+ jQueryの.SHOW().hide()私はこのような何かを持って持続

<div> 
    <asp:ListView> 
     <div> 
      <asp:ListView> 
       <div> 
        <asp:ListView> 
        </asp:ListView> 
       </div> 
      </asp:ListView> 
     <div> 
    </asp:ListView> 
</div> 

上記だけの擬似コードですが、基本的にはそのようなものです。 3レベルのDataBoundリストビュー(それぞれがSqlDataSourceに接続されています)。 すべてのリストビューは、コントロールの組み込み機能を完全に利用しています。選択/挿入/更新/削除はすべてSqlDataSourceを介して.aspx(ItemCommand)にあります。私はコードビハインドを持っていません。

私がしようとしているのは、ListViewをJQueryを使ったTreeViewのようなものにすることです。私の最初のステップは.show()/.hide()子ListViewsですが、PostBackが発生したときには、.show()/.hide()の状態は維持されません。

私はdocument.ready中にはJQueryで使用するリストビューからOnItemCommand中に設定することが<asp:HiddenField>を使用して試みることについてだけど、私はそれが.FindControl()地獄になると思います。

あなたは優雅な解決策を考えていますか?

+0

なぜFindControlは地獄だと思いますか? –

答えて

1

ポストバックで状態を保持し、ポストバックが発生した後に可視性を再割り当てする初期化スクリプトがあるサーバー非表示入力を使用することはどうでしょうか。アイデアを伝達するコード(テストされていない)を次に示します。すべての隠し入力が気に入らない場合は、私たちがデータをいくつかの文字列にパックして解析することができますが、これは以下の解決策よりも多くの作業です。

<div> 
    <asp:ListView> 
     <div> 
      <asp:HiddenField id="level2IsVisible" value="true" class="algc-level-visiblity" /> 
      <asp:ListView> 
       <div> 
        <asp:HiddenField id="level3IsVisible" value="true" class="algc-level-visiblity" /> 
        <asp:ListView> 
        </asp:ListView> 
       </div> 
      </asp:ListView> 
     <div> 
    </asp:ListView> 
</div> 


<script type="text/javascript"> 

// Initialization logic 
$(function(){ 
    $("input.algc-level-visiblity").each(function() { 
    if ($(this).val()) 
     $(this).closest("div").show(); 
    else 
     $(this).closest("div").hide(); 
    // TODO: Add other rules that dictate parent div visibility toggle. 
    }); 
}); 

</script> 
+0

私はすべての行がこのスクリプトで崩壊/展開すると思います... – Madhu

関連する問題