5

ASP.NET Ajax ControlToolkitTabContainerを使用するASP.NETページがあります。イベントではPage_Load、ページに提供されたデータに基づいていくつかのタブを非表示にしています。次に、(オプションの)クエリ文字列パラメーターの値に基づいて、タブの1つをアクティブにします。

ので、私は持っています:

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;
    }
}
4

3 に答える 3

7

次のように、ActiveTabを介して目的のタブを設定してみてください。

ctlTabContainer.ActiveTab = tbpPendingWidgets;

最初のタブをに設定した場合Visible=falseは、ActiveTabを介して次に表示されるタブページを設定する必要があります。

AjaxControlToolkitリリース30930(2009年9月)を使用しています。

于 2010-03-10T15:39:25.987 に答える
2

これは私にとってはうまくいきました:
インデックス、可視性、アクティブなタブを手動でリセットしました。

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

アクティブなタブを設定しようとしていない別の状況では、リセットする必要がありました tabcontainer.ActiveTabIndex = 0

だから私は2つを一緒にまとめて、それはうまくいきました。

于 2011-04-12T15:38:33.797 に答える
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;

于 2013-09-12T06:59:35.673 に答える