2011-08-02 33 views
0

私はアプリケーションでAJAX Control Toolkitの 'TabContainer'コントロールを多く使用しています。アプリケーションの要件は、セッション中にアクティブなタブを保存することです。これを行うには、UpdatePanelにタブがあり、タブが変更されたときにアクティブなタブインデックスをセッションに格納するためにポストバックを実行します。ページがかなり集中しているので、これは遅い操作です。これは理想的ではありません。これに代わるものはありますか?おそらく、Webサービスを使用してポストバックなしでセッションを保存していますか?TabContainerのActiveTabIndexポストバックを保存する

答えて

4

最も簡単な方法は、ScriptManagerのPageMethodを使用することです。

1有効pagemethods

<asp:ScriptManager runat="server" EnablePageMethods="true"></asp:ScriptManager> 
[WebMethod] 
    public static void SaveCurrentTab(string controlId, int currentTabIndex) 
    { 
    // save data to session 
    } 

3は、サーバへの実際のデータを送信するためのJS-関数ハンドラを作成し、実際のタブの情報を取得しますASPXページ内pagemethodを作成

<script type="text/javascript"> 

    function clientActiveTabChanged(sender, args) { 

     PageMethods.SaveCurrentTab(sender.get_id(), sender.get_activeTabIndex()); 
    } 

</script> 

4 TabContainerにjs-handlerを添付します。

<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には、クライアント側の代替意思決定データがあります。

+0

素晴らしいです。ありがとうございました – Chris

+0

あなたは大歓迎です:) – vladimir77

関連する問題