2

我有一个 Ajax Accordion,并且我将默认选定索引设置为 -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中有一个属性hastag,可以让你做很多事情,比如

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

你甚至可以在stackoverflow中找到一个例子,例如当你从菜单中点击某人的答案时,你的问题是专门针对响应和突出显示的

于 2012-05-11T16:08:54.643 回答