存储TabContainer的ActiveTabIndex回发

时间:2011-08-02 00:04:40

标签: c# asp.net ajaxcontroltoolkit

我在我的应用程序中使用了AJAX Control Toolkit的'TabContainer'控件,并且应用程序的要求是将活动选项卡存储在Session中。要执行此操作,我在UpdatePanel中有选项卡,并执行回发以在更改选项卡时将活动选项卡索引存储在会话中。这是一个缓慢的操作,因为页面相当密集,所以这不是理想的。有没有其他选择?也许使用Web服务存储会话而不回发帖子?

1 个答案:

答案 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的客户端保存数据。