[英]Setting active tab in ASP.NET Ajax TabContainer causes entire container to disappear
我有一個ASP.NET頁面,它使用ASP.NET Ajax Control Toolkit 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<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;
}
}
嘗試通過ActiveTab設置所需的選項卡,如:
ctlTabContainer.ActiveTab = tbpPendingWidgets;
如果將第一個選項卡設置為Visible=false
則必須通過ActiveTab設置下一個可見選項卡頁面。
我正在使用AjaxControlToolkit Release 30930(2009年9月)。
這對我有用:
手動重置索引,可見性和活動選項卡。
tabcontainer.ActiveTab = tabname
tabcontainer.Visible = True
tabcontainer.ActiveTabIndex = 2
在我沒有嘗試設置活動選項卡的另一種情況下,我不得不重置tabcontainer.ActiveTabIndex = 0
。
所以我把兩者放在一起就行了。
這很簡單,工作得很完美,試試這個
為選項卡容器中使用的每個選項卡分配選項卡索引,如....
然后<cc1:TabContainer ID="TabContainer1" runat="server">
<cc1:TabPanel ID="tab1" runat="server" TabIndex="0">
//您的面板</cc1:TabPanel>
<cc1:TabPanel ID="tab2" runat="server" TabIndex="1">
//你的面板</cc1:TabPanel>
</cc1:TabContainer>
在cs頁面中編寫此代碼
TabContainer1.ActiveTabIndex = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.