这可能以前曾被问过很多次,但我想知道如何维护AjaxControlToolKit TabContainer的ActiveTabIndex。ASP.NET在TabContainer内保留ActiveTabIndex回发
我可以想到实现这样的事情的唯一方法是在会话中存储ActiveTabIndex并在回发中检查此内容。有没有其他解决方案来解决这个问题?
这可能以前曾被问过很多次,但我想知道如何维护AjaxControlToolKit TabContainer的ActiveTabIndex。ASP.NET在TabContainer内保留ActiveTabIndex回发
我可以想到实现这样的事情的唯一方法是在会话中存储ActiveTabIndex并在回发中检查此内容。有没有其他解决方案来解决这个问题?
最有可能this回答你的问题。这些东西属于页面的ViewState,当它们尚未保存在那里时。
编辑: 另一方面:我测试了它,我的ActiveTabIndex保持(异步)回发。
没有必要在这个Malachi上混淆Session。
在“ActiveTabChanged”事件处理程序刚落,这个(假设你使用C#):
int iTabIndex = int.Parse(Request.Params["__EVENTARGUMENT"].Split(':')[1]);
然后执行,你需要根据“iTabIndex”的价值任何逻辑。
“__EVENTARGUMENT”实际上包含“activeTabChanged:#”(其中“#”是被点击的标签的索引),所以我只是解析出实际的标签索引。 – Mysterei 2011-03-23 22:45:58
您需要为选项卡容器添加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"
此链接将成为未来的有用的 - 但是我意识到这个问题是不是做毕竟还有一个回发问题。谢谢 – Malachi 2010-09-23 13:41:00