У меня есть страница ASP.NET, которая использует Инструментарий Управления Ajax ASP.NET TabContainer. В Page_Load
событие, я скрываю некоторые вкладки на основе данных, данных странице. Я затем хочу сделать одну из вкладок активной на основе значения (дополнительно) параметра строки запроса.
Таким образом, я имею:
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()
для не сокрытия вкладок, которые не содержат данных все работает, как Вы ожидали бы (т.е. корректная вкладка выбрана, когда страница представляет).
Какие-либо идеи?
Править
Согласно просьбе вот больше деталей:
private void LoadDataIntoTabs ()
{
LoadPendingWidgetsTab();
LoadDataIntoTab2();
LoadDataIntoTab3();
// etc...
}
private void LoadPendingWidgetsTab ()
{
IList 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;
}
}
Попробуйте установить нужную вкладку через ActiveTab, например:
ctlTabContainer.ActiveTab = tbpPendingWidgets;
Если вы установите первую вкладку на Visible = false
, тогда вам нужно установить следующую видимую вкладку через ActiveTab.
Я использую AjaxControlToolkit Release 30930 (сентябрь 2009 г.).