2010-09-23 59 views
0

这可能以前曾被问过很多次,但我想知道如何维护AjaxControlToolKit TabContainer的ActiveTabIndex。ASP.NET在TabContainer内保留ActiveTabIndex回发

我可以想到实现这样的事情的唯一方法是在会话中存储ActiveTabIndex并在回发中检查此内容。有没有其他解决方案来解决这个问题?

回答

1

最有可能this回答你的问题。这些东西属于页面的ViewState,当它们尚未保存在那里时。

编辑: 另一方面:我测试了它,我的ActiveTabIndex保持(异步)回发。

+0

此链接将成为未来的有用的 - 但是我意识到这个问题是不是做毕竟还有一个回发问题。谢谢 – Malachi 2010-09-23 13:41:00

1

没有必要在这个Malachi上混淆Session。

在“ActiveTabChanged”事件处理程序刚落,这个(假设你使用C#):

int iTabIndex = int.Parse(Request.Params["__EVENTARGUMENT"].Split(':')[1]); 

然后执行,你需要根据“iTabIndex”的价值任何逻辑。

+1

“__EVENTARGUMENT”实际上包含“activeTabChanged:#”(其中“#”是被点击的标签的索引),所以我只是解析出实际的标签索引。 – Mysterei 2011-03-23 22:45:58

0

您需要为选项卡容器添加ActiveTabChanged事件,并且可以保持活动选项卡索引处于视图状态,并且在页面加载时只检查它是否为空,然后将其设置为活动选项卡索引。

protected void TabContainer1_ActiveTabChanged(object sender, EventArgs e) 
    { 
     ViewState["ActiveTabIndex"] = TabContainer1.ActiveTabIndex; 

    } 

PageOnLoad事件代码

if (!(ViewState["ActiveTabIndex"] == null)) 
     {    
       TabContainer1.ActiveTabIndex = (int)ViewState["ActiveTabIndex"];   

     } 

确保在TabContainer的标签添加以下属性

AutoPostBack="true" OnActiveTabChanged="TabContainer1_ActiveTabChanged" 
相关问题