Пользовательский элемент управления не отображается в AJAX Control Toolkit TabContainer - PullRequest
0 голосов
/ 11 декабря 2011

Когда я нажимаю кнопку «добавить вкладку», код на стороне сервера (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;
        }
    }

1 Ответ

0 голосов
/ 11 декабря 2011

Я не уверен, если это связано, но у меня были похожие проблемы несколько месяцев назад.Вот ответ на SO, который ссылается на forums.asp.net , который содержит подробную информацию: https://stackoverflow.com/a/6307930/284240

Это также может быть вызвано изменением ActiveTabIndex из codebehind без запускаActiveTabChanged событие TabContainer.

Попробуйте использовать эту функцию 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 вместо ScriptManger?

...