あなたが求めているのは、現在開いているパネルを覚えておくことです。
このパネルはネイティブのasp.netコントロールではないため、asp.netはポストバック間でその値を記憶しません。
1つの解決策は、コンテナーに非表示の入力コントロールを保持し、その入力で現在開いているdivの値を維持することです。
Asp.netは、ポストバックでもこのデータを送受信します。
ドキュメントの準備ができたら、この値を読み取って開いているパネルを再度開くことができます。
編集:いくつかのコードを追加しました
あなたのセレクターから、私はあなたのhtmlがこのように見えると思います。
<div class="ContainerPanel">
<div class="collapsePanelHeader">
<div class="ArrowExpand"">
</div>
</div>
<div id="content1" class="Content"">
</div>
<div class="collapsePanelHeader">
<div class="ArrowExpand"">
</div>
</div>
<div id="content2" class="Content"">
</div>
<input id="selectPanel1" runat="server" class="selectPanel"/>
</div>
各コンテンツブロックにIDを追加しました。IDがない場合は、このコードを機能させるためにIDを追加する必要があります。
ContainerPanelの下部にある入力タグに注意してください。これは、どのdivが開いていたかを覚えておくために必要になります。asp.netでは、要素ごとに一意のIDタグが必要です。
<input id="selectPanel1" runat="server" class="selectPanel"/>
そして、jsは次のようになります:
$(document).ready(function() {
$("div.ContainerPanel > div.collapsePanelHeader > div.ArrowExpand").toggle(function() {
$(this).parent().next("div.Content").show("slow");
$(this).attr("class", "ArrowClose");
//Put the id of the selected content into an input
//This is so that it goes to the server
var inputBox = $(this).parent().parent().find(".selectPanel");
inputBox.val("#" + $(this).parent().next("div.Content").attr("id"));
},function() {
$(this).parent().next("div.Content").hide("slow");
$(this).attr("class", "ArrowExpand");
});
//This supports multiple ContainerPanel divs.
$("div.ContainerPanel").each(function(e){
//retrive value of div open before postback and show it
var selectedContentId = $(this).find(".selectPanel").val();
if(selectedContentId != "")
$(selectedContentId).show();
});
});