2010-09-23 35 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"