Vb net ajax tab control

lunedì 27 aprile 2009 - 10.19

$ilver Profilo | Junior Member

Ciao a tutti,
nella mia applicazione web avrei bisogno di creare una pagina con all'interno altre pagine divise in tab.
Ho pensato di usare i tab control di ajax ma ho subito un problema in quanto ho scaricato l'ajax toolkit da http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=11121 ma non so come importarlo nel mio progetto, come posso fare?

Inoltre, all'interno di ogni tab posso mettere il codice che avevo inserito per ogni pagina singola?(Cioè io avevo creato 3 pagine ora però voglio creare una pagina con 3 tab, quindi il link rimane uguale e cambio solo il tab in ajax)

Grazie mille a tutti.

rossimarko Profilo | Guru

Ciao,

prova a guardare la documentazione a questo indirizzo: http://msdn.microsoft.com/it-it/library/cc185051.aspx

Ci sono i vari passaggi da fare
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Ok, sono uno stupido avevo già fatto tutto ma non avevo creato la mia colonna degli oggetti in visual studio il bello che avevo anche letto e stampato le indicazioni di importazione.
Qualcuno di voi ha già usato i tab ajax?
Io ora ho provato a inserire una tab e al suo interno mi da tabpanel però sia se metto dei label o delle scritte mi da errore e mi dice che queste non sono proprietà del panel, devo richiamare in qualche modo l'ajaxtoolkit nella pagina?

Grazie mille

rossimarko Profilo | Guru

Se avevi già delle pagine fatte forse ti conviente creare degli usercontrol (ascx) per ogni pagina che avevi fatto. In questo modo lo usercontrol è autonomo come gestione del layout e del codice.

Poi inserisci gli user control all'interno dei vari tab. Se un domani devi ritornare ad una pagina normale basterà inserire il controllo ascx all'interno della pagina invece che nel tab

Per inserire un temlplate nei tab prova a guardare l'esempio proposto sul sito di demo: http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Tabs/Tabs.aspx

<ajaxToolkit:TabContainer runat="server" OnClientActiveTabChanged="ClientFunction" Height="150px"> <ajaxToolkit:TabPanel runat="server" HeaderText="Signature and Bio" <ContentTemplate> ... </ContentTemplate> /> </ajaxToolkit:TabContainer>
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Domanda,
ora ho fatto una prova e i panel funzionano, ma io in ogni panel dovrei metterci praticamente le pagine aspx che avevo fatto separatamente.

Cioè io avevo fatto un tot di pagine aspx con il rispettivo codice vb, ora però devo mettere tutto in una pagina e le form che aveo creato metterli nei diversi panel del tab, però ho visto che se metto tutto mi viene un codice lunghissimo perchè è il codice di 5 pagine messe insieme, c'è un modo per poter ovviare a questo?

Posso fare un User control per ogni pagina? Se si come faccio a metterli nello stesso tabcontainer?
Grazie mille ancora

rossimarko Profilo | Guru

Si puoi mettere il codice della pagine (sia aspx che vb/cs) in vari usercontrol (uno per pagina).

Poi metti ogni user control dentro al template di un tab come se fosse un controllo di quelli già registrati (textbox, label ecc)
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Ok grazie mille.

$ilver Profilo | Junior Member

>Si puoi mettere il codice della pagine (sia aspx che vb/cs) in
>vari usercontrol (uno per pagina).
>
>Poi metti ogni user control dentro al template di un tab come
>se fosse un controllo di quelli già registrati (textbox, label
>ecc)

Io ho fatto come mi hai detto, ma ho un problema, ogni volta che clicco su un pulsante che ho inserito nell' UC mi refresha tutta la pagina dove al suo interno ha il tabcontrolAjax e mi va sul primo tab e non sul tab in cui stavo lavorando.
Come faccio per fare in modo di non refreshare la pagina ogni volta che clicco su un pulsante?

rossimarko Profilo | Guru

Il metodo più rapido per evitare i postback della pagina è usare un updatepanel (http://aspnet.html.it/guide/lezione/3406/updatepanel/) che contenga il tuo ascx, ma occhio che passi molti dati potrebbe essere deleterio in termini di performance.

Devi fare alcune prove
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Cavolo io ho il problema che ho molti dati e vengono anche messi nei repeater e se tu mi dici che è deleterio come performance non so se andrebbe bene...

Altre possibilità?

Inoltre un'altra csa quando clicco sul tab del mio controllo ajax non mi passa nel pageload del Uc, quindi mi rimangono i dati selezionati in precedenza, c'è un modo o una proprietà per la quale si possa avere sempre la situazione iniziale dell' Uc al cliccare dei tab?

Grazie davvero
$ilver

rossimarko Profilo | Guru

>Cavolo io ho il problema che ho molti dati e vengono anche messi
>nei repeater e se tu mi dici che è deleterio come performance
>non so se andrebbe bene...
>
>Altre possibilità?

L'alternativa è mettere degli iframe e caricare le vecchie pagine all'interno, oppure togliere i tab e usare dei semplici linkbutton (ovviamente con una grafica a tab) che visualizzano solo un controllo alla volta. Quindi ad ogni click su un linkbutton di selezione visualizzi solo il controllo selezionato (puoi sfruttare il controllo multiview che ti consente di tenere visualizzata solo una view alla volta http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx)

>Inoltre un'altra csa quando clicco sul tab del mio controllo
>ajax non mi passa nel pageload del Uc, quindi mi rimangono i
>dati selezionati in precedenza, c'è un modo o una proprietà per
>la quale si possa avere sempre la situazione iniziale dell' Uc
>al cliccare dei tab?

Non ti passa nel page load perchè il passaggio da un tab all'altro è lato client. In questo momento non riesco a verificare comunque l'unico modo è scatenare l'evento di selezione di un tab lato server, quindi prova a verificare se c'è una proprietà autopostback nel tabcontainer e se riesci ad agganciare un evento. Poi all'interno dell'evento dovrai richiamare un metodo del tuo controllo che ti faccia il popolamento che fai nel page load.
A questo punto ad ogni selezione di un tab corrisponderà un postback, quindi si comporterà come se avessi dei link seperati (vedi sopra)
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

>L'alternativa è mettere degli iframe e caricare le vecchie pagine
>all'interno, oppure togliere i tab e usare dei semplici linkbutton
>(ovviamente con una grafica a tab) che visualizzano solo un controllo
>alla volta. Quindi ad ogni click su un linkbutton di selezione
>visualizzi solo il controllo selezionato (puoi sfruttare il controllo
>multiview che ti consente di tenere visualizzata solo una view
>alla volta http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx)

Ok allora provo con gli iframe, ma questi devo inserirli all'interno del tab ajax o all'interno del usercontrol?

>Non ti passa nel page load perchè il passaggio da un tab all'altro
>è lato client. In questo momento non riesco a verificare comunque
>l'unico modo è scatenare l'evento di selezione di un tab lato
>server, quindi prova a verificare se c'è una proprietà autopostback
>nel tabcontainer e se riesci ad agganciare un evento. Poi all'interno
>dell'evento dovrai richiamare un metodo del tuo controllo che
>ti faccia il popolamento che fai nel page load.
>A questo punto ad ogni selezione di un tab corrisponderà un postback,
>quindi si comporterà come se avessi dei link seperati (vedi sopra)

Immaginavo fosse da lato client cmq nelle proprietà del tab ajax c'è l'autopostback ma se lo metto true mi fa casino, mentre per i singoli pannelli ho la proprietà OnClientClick potrebbe servire?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5