2011-12-10 3 views
0

Когда я нажимаю кнопку «добавить вкладку», код на стороне сервера (tabs.ActiveTabIndex+=1) меняет вкладки, но вкладка выглядит пустой. Если я нажимаю «назад» и «вперед», я вижу, что пользовательский элемент управления отображается. Я что-то упускаю?Пользовательский элемент управления не отображается в AJAX Control Toolkit Элемент управления TabContainer

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

ответ

0

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

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

Попробуйте использовать эту функцию Javascript функции onclick вашей кнопку, которая вызывает TabContainer, чтобы вызвать это событие:

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

После этого вы можете обработать событие и изменить видимость ваших UserControls (и при необходимости исправьте UpdatePanels).

Я только заметил, что я ответил another similar question here on SO:

Вы пытались установить ActiveTab-Property (от коды) или ActiveTabIndex из ASPX или коды?

Вы также можете проверить, если он работает, если вы явно установить дисплей в видимой:

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

Вы уверены, что библиотеки Ajax загружены правильно? У вас есть другие Ajax-элементы управления внутри вашего TabContainer? Проверьте, действительно ли весь ваш html на этой странице.

Используете ли вы новейшие AjaxToolkit и ToolkitScriptManager вместо ScriptManger?

+0

спасибо Тим, очень тщательные шаги, я ценю это. Прежде всего, по какой-то причине я, похоже, не могу получить доступ к вкладкам из интерфейса, приведенный выше javascript дает мне неопределенное значение для функции set_activeTab! Затем я попытался установить autopostback в true, который, похоже, устранил проблему, затем я сменил scriptmanager на toolkitscript manager, а затем я попытался установить autopostback на false. Я получил пользовательский элемент управления, чтобы отобразить просто отлично ... автоматически! :) – nolimit

Смежные вопросы