加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET中设置活动选项卡Ajax TabContainer会导致整个容器消失

发布时间:2020-12-16 06:51:39 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用 ASP.NET Ajax Control Toolkit TabContainer的ASP.NET页面.在Page_Load事件中,我隐藏了一些基于给予页面的数据的选项卡.然后,我想根据(可选)查询字符串参数的值使其中一个选项卡处于活动状态. 所以我有: protected void Page_Load ( object se
我有一个使用 ASP.NET Ajax Control Toolkit TabContainer的ASP.NET页面.在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月).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读