2

Ajax アコーディオンがあり、デフォルトの選択インデックスが -1 に設定されているため、すべてのペインが閉じられています。各ペインにはいくつかの異なるコントロールがあり、自動ポストバックが発生すると、もちろんすべてのペインが折りたたまれます。

ページの読み込み時に選択したインデックス -1 に設定し、ポストバック時に選択したインデックスをポストバック前の状態に設定する方法はありますか?

質問の内容を明確にすることができる場合はお知らせください。また、提供できるコード スニピットがあれば教えてください。- コードビハインドはC#

ありがとうございました

//My Accordion
 <ajaxtoolkit:accordion ID="MyAccordion" runat="Server" 
     HeaderCssClass="aHeader"  HeaderSelectedCssClass="aSelected"
     ContentCssClass="aContent" AutoSize="None" FadeTransitions="true"
     TransitionDuration="250" FramesPerSecond="40" RequireOpenedPane="false" 
     SuppressHeaderPostbacks="true" Height="894px" style="margin-right: 23px" 
     Width="717px">

//Page Load Event
 protected void Page_Load(object sender, EventArgs e)
    {
        if (ViewState["SelectedAccordionIndex"] == null)
        {
            MyAccordion.SelectedIndex = -1;
        }
        else
        {
            MyAccordion.SelectedIndex = (int)ViewState["SelectedAccordionIndex"];
        }
        if (!IsPostBack)
        {
            LoadPage();
        }
    }
    //drop down list set to auto post back
    protected void dropdownlist_SelectedInexChange(object sender, EventArgs e)
    {
        ViewState["SelectedAccordionIndex"] = MyAccordion.SelectedIndex;
    }
4

2 に答える 2

1

これには、ビューステート変数またはクエリ文字列変数のいずれかを使用します。Page_Loadどちらかが存在するかどうかのチェックで、そうでない場合はselectedindex-1に設定し、そうでない場合はビューステートまたはクエリ文字列の値に設定します。

もちろん、ポストバックが発生する領域では、クエリ文字列またはビューステートのいずれかにインデックス値を格納する必要があります。私があなたなら、ビューステートを使用します。

于 2012-05-11T15:59:35.053 に答える
0

URLには、次のような多くのことを実行できるプロパティハッシュタグがあります。

http://host/section/accordion  <-- default

//Pseudocode

if(hashtag == null)
{
   selectedIndex = -1;
}
else
{ 
  selectedIndex = hashtag.value;
}

http://host/section/accordion#1 <-- selectedIndex == 1
http://host/section/accordion#2 <-- selectedIndex == 2

javascriptでは、次のようなハッシュタグを取得できますwindow.location.hash

スタックオーバーフローで例を見つけることもできます。たとえば、メニューから移動して誰かの回答への回答をクリックすると、質問は特に回答とハイライトになります。

于 2012-05-11T16:08:54.643 に答える