C# 用户控件不在AJAX控件工具箱TabContainer控件中呈现

C# 用户控件不在AJAX控件工具箱TabContainer控件中呈现,c#,ajaxcontroltoolkit,tabcontainer,C#,Ajaxcontroltoolkit,Tabcontainer,单击“添加选项卡”按钮时,服务器端代码tabs.ActiveTabIndex+=1会更改选项卡,但该选项卡看起来是空的。如果我来回单击,我可以看到用户控件渲染。我错过什么了吗 <ajaxToolkit:TabContainer ID="TabContainer1" runat="server" Height="90%" Width="100%" ActiveTabIndex="0" OnDemand="true" AutoPostBack="false" TabStripP

单击“添加选项卡”按钮时,服务器端代码tabs.ActiveTabIndex+=1会更改选项卡,但该选项卡看起来是空的。如果我来回单击,我可以看到用户控件渲染。我错过什么了吗

<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" Height="90%" Width="100%"
        ActiveTabIndex="0" OnDemand="true" AutoPostBack="false" TabStripPlacement="Top"
        CssClass="ajax__tab_xp" ScrollBars="None" UseVerticalStripPlacement="false" VerticalStripWidth="120px">
        <ajaxToolkit:TabPanel ID="tab1" runat="server" HeaderText="1">
            <ContentTemplate>
                <uc:UCCommSubmit ID="ucCommInfo" runat="server" />
            </ContentTemplate>
        </ajaxToolkit:TabPanel>
        <ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="" Visible="false">
            <ContentTemplate>
                <uc:UCCommSubmit ID="UCCommSubmit1" runat="server" />
            </ContentTemplate>
        </ajaxToolkit:TabPanel>
        <ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="" Visible="false">
            <ContentTemplate>
                <uc:UCCommSubmit ID="UCCommSubmit2" runat="server" />
            </ContentTemplate>
        </ajaxToolkit:TabPanel>
    </ajaxToolkit:TabContainer>
    <div style="padding-right: 20px; float: right">
        <asp:Button ID="btnNext" runat="server" Text="Add Tab" 
            onclick="btnNext_Click" />
    </div>


protected void btnNext_Click(object sender, EventArgs e)
    {
        if (TabContainer1.Tabs.Count > TabContainer1.ActiveTabIndex + 1)
        {
            TabContainer1.Tabs[TabContainer1.ActiveTabIndex + 1].HeaderText = (TabContainer1.ActiveTabIndex + 1).ToString();
            TabContainer1.Tabs[TabContainer1.ActiveTabIndex+1].Visible = true;
            TabContainer1.ActiveTabIndex += 1;
        }
    }

我不确定这是否相关,但几个月前我也遇到过类似的问题。以下是包含详细信息的SO的答案:

这也可能是由于在不触发TabContainer的ActiveTabChanged事件的情况下从codebehind更改ActiveTabIndex引起的

单击按钮时尝试使用此javascript函数,这会导致TabContainer触发此事件:

function changeActiveTab(tabContainerID,tabIndex){
    var ctrl = $find(tabContainerID);
    ctrl.set_activeTab(ctrl.get_tabs()[tabIndex]);
}
然后,您可以处理该事件并更改UserControls的可见性,并在必要时更新UpdatePanel

我只是注意到我回答:

您是否尝试过从codebehind设置ActiveTab属性,或从codebehind或aspx设置ActiveTabIndex

如果显式将显示设置为可见,还可以检查它是否工作:

ActiveTabIndex="0" style="display:block;visibility:visible;"
您确定Ajax库已正确加载吗?TabContainer中是否有其他Ajax控件?检查该页面中的所有html是否有效


您使用的是最新的AjaxToolkit和ToolkitScriptManager而不是ScriptManger吗?

谢谢Tim,非常详细的步骤,非常感谢。首先,由于某些原因,我似乎无法从前端访问选项卡,上面的javascript为我提供了未定义的set_activeTab函数!!然后我尝试将autopostback设置为true,这似乎解决了问题,然后我将scriptmanager更改为toolkitscript manager,然后尝试将autopostback设置为false我让用户控件渲染得很好。。。自动地!!: