簡體   English   中英

在ASP.NET中設置活動選項卡Ajax TabContainer會導致整個容器消失

[英]Setting active tab in ASP.NET Ajax TabContainer causes entire container to disappear

我有一個ASP.NET頁面,它使用ASP.NET Ajax Control Toolkit TabContainer Page_Load事件中,我隱藏了一些基於給予頁面的數據的選項卡。 然后,我想根據(可選)查詢字符串參數的值使其中一個選項卡處於活動狀態。

所以我有:

protected void Page_Load ( object sender, EventArgs e )
{
    if ( !this.IsPostBack )
    {
        // Tabs with no data are hidden in here
        LoadDataIntoTabs();

        PreselectCorrectTab();
    }
}

private void PreselectCorrectTab ()
{
    if ( ctlTabContainer.Visible )
    {
        if ( !string.IsNullOrEmpty( Request.QueryString[ "tabIndex" ] ) )
        {
            int tabIndex = 0;

            if ( int.TryParse( Request.QueryString[ "tabIndex" ], out tabIndex ) )
            {
                if ( ( ctlTabContainer.Tabs.Count > tabIndex ) && ctlTabContainer.Tabs[ tabIndex ].Visible )
                {
                    ctlTabContainer.ActiveTabIndex = tabIndex;
                }
            }
        }
    }
}

如果我使用tabIndex查詢字符串參數設置點擊頁面,則整個選項卡容器將消失。

奇怪的是,如果我將LoadDataIntoTabs()更改為隱藏包含數據的選項卡,則一切都按預期工作(即在頁面呈現時選擇正確的選項卡)。

有任何想法嗎?


編輯

根據要求,這里有更多細節:

private void LoadDataIntoTabs ()
{
    LoadPendingWidgetsTab();
    LoadDataIntoTab2();
    LoadDataIntoTab3();
    // etc...
}

private void LoadPendingWidgetsTab ()
{
    IList<Widget> pendingWidgets = GetAllPendingWidgets();

    if ( ( pendingWidgets != null ) && ( pendingWidgets.Count > 0 ) )
    {
        tbpPendingWidgets.Visible = true;
        tbpPendingWidgets.HeaderText = String.Format( "Pending Widgets ({0})", pendingWidgets.Count );

        grdPendingWidgets.DataSource = pendingWidgets;
        grdPendingWidgets.DataBind();
    }
    else
    {
        tbpPendingWidgets.Visible = false;
    }
}

嘗試通過ActiveTab設置所需的選項卡,如:

ctlTabContainer.ActiveTab = tbpPendingWidgets;

如果將第一個選項卡設置為Visible=false則必須通過ActiveTab設置下一個可見選項卡頁面。

我正在使用AjaxControlToolkit Release 30930(2009年9月)。

這對我有用:
手動重置索引,可見性和活動選項卡。

 tabcontainer.ActiveTab = tabname
 tabcontainer.Visible = True
 tabcontainer.ActiveTabIndex = 2

在我沒有嘗試設置活動選項卡的另一種情況下,我不得不重置tabcontainer.ActiveTabIndex = 0

所以我把兩者放在一起就行了。

這很簡單,工作得很完美,試試這個

為選項卡容器中使用的每個選項卡分配選項卡索引,如....

然后<cc1:TabContainer ID="TabContainer1" runat="server">

<cc1:TabPanel ID="tab1" runat="server" TabIndex="0"> //您的面板</cc1:TabPanel> <cc1:TabPanel ID="tab2" runat="server" TabIndex="1"> //你的面板</cc1:TabPanel>

</cc1:TabContainer>

在cs頁面中編寫此代碼

TabContainer1.ActiveTabIndex = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM