Динамическое создание вкладок для ajax tab container;
Ситуация была следующая - в разметке был размещен контейнер, для которого создавал вкладки динамически...
разметка:
до постбека все происходило нормально, при переходе на другую страницу или при постбеке получал сообщение:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
ну и stack trace до вызова set_ActiveTabIndex;
лечится только динамическим созданием самого tab container как показано ниже:
помещаем в place holder и затем уже добавляем вкладки...
Ситуация была следующая - в разметке был размещен контейнер, для которого создавал вкладки динамически...
разметка:
<ajaxtoolkit:tabcontainer id="tabContainerCompanyProfile" runat="server" enableviewstate="true" width="100%">
</ajaxtoolkit:tabcontainer>
до постбека все происходило нормально, при переходе на другую страницу или при постбеке получал сообщение:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
ну и stack trace до вызова set_ActiveTabIndex;
лечится только динамическим созданием самого tab container как показано ниже:
помещаем в place holder и затем уже добавляем вкладки...
разметка:
<table>
<tr>
<td>
<asp:PlaceHolder ID="phTabContainer" runat="server" EnableViewState="true">
</asp:PlaceHolder>
</td>
</tr>
...........................
фрагмент кода:
var availableTabs = (from pd in this.ProfileDescriptors
where pd.CompanyTypes.Contains(this.CompanyType) &&
(pd.EditMode == EditMode.All || pd.EditMode == this.ProfileMode)
select pd).ToList();
if (availableTabs != null &&
availableTabs.Count > 0)
{
AjaxControlToolkit.TabContainer tabContainer = new AjaxControlToolkit.TabContainer();
tabContainer.Width = Unit.Parse("100%");
tabContainer.Enabled = true;
tabContainer.Visible = true;
phTabContainer.Controls.Add(tabContainer);
foreach (ProfileDescriptor profileDescriptor in availableTabs)
{
foreach (TabDescriptor tabDescriptor in profileDescriptor.TabDescriptors)
{
CompanyProfileTabs.CompanyPropertiesTabBase propertiesEditor = (CompanyProfileTabs.CompanyPropertiesTabBase)this.LoadControl(tabDescriptor.TabControlURL);
if (propertiesEditor != null)
{
AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
tab.Visible = true;
tab.Width = Unit.Percentage(100);
tab.Enabled = true;
tab.HeaderText = tabDescriptor.HeaderCaption;
propertiesEditor.Visible = true;
tab.Controls.Add(propertiesEditor);
tabContainer.Tabs.Add(tab);
this.Tabs.Add(propertiesEditor);
}
}
}
if (this.Tabs.Count > 0)
{
tabContainer.ActiveTabIndex = 0;
}
}
Комментариев нет:
Отправить комментарий