2016-04-09 21 views
1

私はこれらのフィルタの束を含むパネルを持っています。デフォルトではすべて折りたたまれていますが、ボタンをクリックするとdivが展開されます。ただし、ポストバックがあるたびにdivが折りたたまれます。どのようにして、divの現在の状態をポストバック間で持続させることができますか?折りたたみ可能な区切りをポストバック後に開く

   <h4 class="contentFilterHeader">Start Date</h4> 
       <button type="button" class="btn" data-toggle="collapse" data-target="#startDate"> 
       <div id="startDate" class="collapse"> 
        <label for="from">Before:</label> 
        <div class="form-group"> 
         <div class="date"> 
          <div class="input-group"> 
           <input type="text" class="form-control" id="startPicker" runat="server" name="date" /> 
           <span class="input-group-addon><span class="glyphicon glyphicon-calendar"></span></span> 
          </div> 
         </div> 
        </div> 

答えて

0

あなたは全体#startDateのdivにrunat=serverを追加し、isPostBack以上を確認した後、背後にあるコードからそれらにクラスを設定することができ、まだページ上でそれを開くために少しjavascriptのコードを追加する準備ができて

startDate.innerHtml = startDate.innerHtml + "<script> $(document).ready(function(){ $('#startDate').collapse('show') }) </script>"; 

そしてbootstrap

EDIT

次のコードを使用することができます http://codepen.io/jammer99/pen/eZyqEN

var t, 
    //read cookie and determine if any panel was open before 
    earlierPanel = readCookie("openpanel") 
    //if value is found collapse all earlier panels and then open the last panel 
if (earlierPanel) { 
    $('#accordion .panel-collapse').removeClass("in"); 
    $("#" + earlierPanel).addClass("in") 
} 
//reset the behaviour when user opens another panel 
$('#accordion').on('shown.bs.collapse', function(w) { 
    t = w.target; 
    createCookie("openpanel", $(t).attr("id")) 
}) 

// remove cookie value using the following or you can write your code to delete the cookie 
$('#accordion').on('hide.bs.collapse', function(w) { 
    createCookie("openpanel","") 
}) 

function createCookie(name, value) { 
    document.cookie = name + "=" + value + "; path=/"; 
} 

function readCookie(name) { 
    var e = name + "="; 
    var a = document.cookie.split(";"); 
    for (var d = 0; d < a.length; d++) { 
    var f = a[d]; 
    while (f.charAt(0) == " ") { 
     f = f.substring(1, f.length) 
    } 
    if (f.indexOf(e) == 0) { 
     return f.substring(e.length, f.length) 
    } 
    } 
    return null 
}; 
+0

私はC#とブートストラップを使用しています。ただし、デフォルトではdivを折りたたんでいます。ユーザーが1つを開くと、ポストバック間で開いたままにしておき、閉じるまで –

+0

が正しいとします。この小さなjavascriptのスニペットは何をするでしょう。ポストバックを検出し、ポストバック時にdivを開きます。おそらくクッキーを使って行うことができる正しいターゲットを指定する必要があります。 –

+0

多分私は誤解を抱いていますが、そのコードはコードビハインドのページロードイベントに入り、ポストバックがあるたびにdivを折りたたむでしょうか?私は必ずdivにオープンしたいとは思わない。ポストバックが発生する直前にユーザーによって開かれた場合のみ、私はそれを開いておきたい。それ以外の場合は、既定で閉じておく必要があります。 –

1

パネルの状態を保存するには、HiddenFieldを使用します。 C#を使用していると仮定すると、

関連する問題