У меня есть страница ASP.NET, которая использует ASP.NET Ajax Control Toolkit TabContainer. В событии Page_Load
я скрываю некоторые вкладки на основе данных, данных на странице. Затем я хочу активировать одну из вкладок на основе значения параметра (необязательного) строкового запроса.Настройка активной вкладки в ASP.NET Ajax TabContainer приводит к исчезновению всего контейнера
Так у меня есть:
protected void Page_Load (object sender, EventArgs e)
{
if (!this.IsPostBack)
{
// Tabs with no data are hidden in here
LoadDataIntoTabs();
PreselectCorrectTab();
}
}
private void PreselectCorrectTab()
{
if (ctlTabContainer.Visible)
{
if (!string.IsNullOrEmpty(Request.QueryString[ "tabIndex" ]))
{
int tabIndex = 0;
if (int.TryParse(Request.QueryString[ "tabIndex" ], out tabIndex))
{
if ((ctlTabContainer.Tabs.Count > tabIndex) && ctlTabContainer.Tabs[ tabIndex ].Visible)
{
ctlTabContainer.ActiveTabIndex = tabIndex;
}
}
}
}
}
Если я попал на страницу с набором параметров строки запроса tabIndex
, вся вкладка контейнер исчезает.
Самое странное в том, что если я изменю LoadDataIntoTabs()
к не вкладки скрыть, которые не содержат никаких данных, все работает, как и следовало ожидать (то есть вкладка правильно выбран, если страница отображается).
Любые идеи?
EDIT
В соответствии с просьбой, здесь больше деталей:
private void LoadDataIntoTabs()
{
LoadPendingWidgetsTab();
LoadDataIntoTab2();
LoadDataIntoTab3();
// etc...
}
private void LoadPendingWidgetsTab()
{
IList<Widget> pendingWidgets = GetAllPendingWidgets();
if ((pendingWidgets != null) && (pendingWidgets.Count > 0))
{
tbpPendingWidgets.Visible = true;
tbpPendingWidgets.HeaderText = String.Format("Pending Widgets ({0})", pendingWidgets.Count);
grdPendingWidgets.DataSource = pendingWidgets;
grdPendingWidgets.DataBind();
}
else
{
tbpPendingWidgets.Visible = false;
}
}
Можете ли вы разместить код для LoadDataIntoTabs(), похоже, проблема там есть – Jon