Die opstel van aktiewe blad in ASP.NET Ajax TabContainer veroorsaak hele houer te verdwyn
-
03-07-2019 - |
Vra
Ek het 'n ASP.NET bladsy wat die ASP.NET Ajax gebruik beheer Toolkit TabContainer . In die Page_Load
geval, ek wegkruip sommige van die oortjies wat gebaseer is op die wat aan die bladsy data. Ek wil dan na een van die tabs aktiewe gebaseer op die waarde van 'n (opsioneel) navraag string parameter maak.
So ek het:
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;
}
}
}
}
}
As ek die bladsy te tref met die tabIndex
navraag string parameter stel, die hele blad houer verdwyn.
Die vreemde ding is dat as ek LoadDataIntoTabs()
verander nie verberg oortjies wat geen data bevat, alles werk soos jy sou verwag (dit wil sê die korrekte blad is gekies as die bladsy lewer).
Enige idees?
wysig
As versoek, hier is meer inligting:
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;
}
}
Oplossing
Probeer om die verlangde blad stel via ActiveTab soos:
ctlTabContainer.ActiveTab = tbpPendingWidgets;
As jy die eerste blad om Visible=false
dan moet jy die volgende sigbare blad bladsy stel via ActiveTab stel.
psalmsing met behulp van die AjaxControlToolkit Release 30930 (September 2009).
Ander wenke
Dit werk vir my:
Met die hand die Herstel van die indeks, die sigbaarheid en die aktiewe blad.
tabcontainer.ActiveTab = tabname
tabcontainer.Visible = True
tabcontainer.ActiveTabIndex = 2
In 'n ander situasie waar ek nie probeer om die aktiewe blad stel, moes ek tabcontainer.ActiveTabIndex = 0
herstel.
Ek sit die twee saam en dit het gewerk.
Dit is eenvoudig en gewerk perfek, probeer hierdie
toewys die blad indeks vir elke blad wat gebruik word in jou blad houer soos ....
dan <cc1:TabContainer ID="TabContainer1" runat="server">
<cc1:TabPanel ID="tab1" runat="server" TabIndex="0">
// jou paneel
</cc1:TabPanel>
<cc1:TabPanel ID="tab2" runat="server" TabIndex="1">
// jou paneel
</cc1:TabPanel>
</cc1:TabContainer>
skryf hierdie kode in cs bladsy
TabContainer1.ActiveTabIndex = 1;