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



当我点击"添加选项卡"按钮时,服务器端代码(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上的答案,它链接到forums.net,包含详细信息:https://stackoverflow.com/a/6307930/284240

在不触发TabContainerActiveTabChanged事件的情况下,将ActiveTabIndex从码后改变也可能引起。

尝试使用这个javascript函数onclick的按钮,导致TabContainer触发这个事件:

function changeActiveTab(tabContainerID,tabIndex){
    var ctrl = $find(tabContainerID);
    ctrl.set_activeTab(ctrl.get_tabs()[tabIndex]);
}

然后你可以处理事件和改变你的UserControls的可见性(和更新UpdatePanels如果必要的话)。

我刚刚注意到我在SO上回答了另一个类似的问题:

您是否尝试设置activetab属性(从codebehind)或ActiveTabIndex从codebehind或aspx?

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

ActiveTabIndex="0" style="display:block;visibility:visible;"

您确定正确加载了Ajax库吗?你有其他的ajax控件在你的TabContainer吗?检查该页面中所有的html是否有效。

你是否使用最新的AjaxToolkit和ToolkitScriptManager而不是scriptmanager ?

相关内容

  • 没有找到相关文章

最新更新