我在我的应用程序中使用了AJAX Control Toolkit的'TabContainer'控件,并且应用程序的要求是将活动选项卡存储在Session中。要执行此操作,我在UpdatePanel中有选项卡,并执行回发以在更改选项卡时将活动选项卡索引存储在会话中。这是一个缓慢的操作,因为页面相当密集,所以这不是理想的。有没有其他选择?也许使用Web服务存储会话而不回发帖子?
答案 0 :(得分:4)
最简单的方法是使用ScriptManager的PageMethod。
1启用页面方法
<asp:ScriptManager runat="server" EnablePageMethods="true"></asp:ScriptManager>
2在aspx页面中创建页面方法,它将获得实际的标签信息
[WebMethod]
public static void SaveCurrentTab(string controlId, int currentTabIndex)
{
// save data to session
}
3创建用于将实际数据发送到服务器的js-function处理程序
<script type="text/javascript">
function clientActiveTabChanged(sender, args) {
PageMethods.SaveCurrentTab(sender.get_id(), sender.get_activeTabIndex());
}
</script>
4将js-handler连接到TabContainer
<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" OnClientActiveTabChanged="clientActiveTabChanged">
<ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="Test1">
<ContentTemplate>Test1</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="Test2">
<ContentTemplate>Test2</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel3" runat="server" HeaderText="Test3">
<ContentTemplate>Test3</ContentTemplate>
</ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>
PS还有其他决策 - 在cookie的客户端保存数据。