我有一個使用ASP.NET Ajax Control Toolkit TabContainer的ASP.NET頁面。在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()
到不隱藏的標籤,一切都按你所期望的(即頁面呈現時選擇了正確的選項卡)。
任何想法?
編輯
按照要求,這裏有更多的細節:
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 2009-05-01 17:34:26