Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Multiview e GridView
martedì 18 febbraio 2014 - 19.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
biroph
Profilo
| Junior Member
56
messaggi | Data Invio:
mar 18 feb 2014 - 19:46
Salve,
ho una pagina nella quale ci sono 2 miltiview, ognuna delle quali contiene 3 gridview su 3 view.
Al load della pagina carico le grid, ma quando clicco sulla multiviuew1, le griglie nella multiview2 (postback) perdono lo stato.
C'è un modo per evitare di fare sempre il databind nel pageload?
Grazie per l'aiuto.
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mer 19 feb 2014 - 03:47
>Salve,
>ho una pagina nella quale ci sono 2 miltiview, ognuna delle quali
>contiene 3 gridview su 3 view.
>Al load della pagina carico le grid, ma quando clicco sulla multiviuew1,
>le griglie nella multiview2 (postback) perdono lo stato.
Perdono lo stato?
Cosa intendi? Che i dati vengono ricaricati ad ogni postback?
>C'è un modo per evitare di fare sempre il databind nel pageload?
Certo che c'è.
Si tratta di persistenza di dati.
Ad ogni postback l'evento load riparte e viene eseguito tutto ciò che è in esso contenuto, quindi i databind delle griglie.
Devi semplicemente verificare, nell'evento load se è un postBAck o no, e se lo è non esegui il databind.
ESEMPIO:
If Not IsPostBack Then 'Non è un postback, cioè è la prima chiamata alla pagina e quindi carica tutto
fai il databind delle griglie
else ' è un postback
fai qualcosa altro
end if
>
>Grazie per l'aiuto.
prego
FAmmi sapere
Riccardo D'Aria
biroph
Profilo
| Junior Member
56
messaggi | Data Invio:
mer 19 feb 2014 - 11:32
Ciao, grazie della risposta.
Nel pageload io eseguo il databind delle 3 gridview, e imposto la proprietà ActiveViewIndex = 0 della multiview, per visualizzare la prima view.
Se eseguo il databind solo nel !IsPosBack, quando clicco sui pulsanti associati alla multiview per visualizzare la view con indice = 1, la gridview contenuta in essa è vuota.
In alternativa, se sotto il pulsante su cui clicco eseguo il caricamento (databind) della sola gridview che voglio visualizzare, le gridview nella multiview2 si svuotano e perdono lo stato.
Info aggiuntive: le gridview hanno una header che viene costruita e caricata dinamicamente, il datasource è una List<T> che contingono oggetti custom.
la multiview con le e gridview sono inserite in un ascx che replico 2 volte su una pagina aspx.
spero di essermi spiegato bene.
Grazie per l'aiuto
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
gio 20 feb 2014 - 04:24
Adesso non ti seguo più?
Cosa vuoi fare?
Quando vuoi caricare le griglie?
Se le carichi nell'evento page load, e se non metti alcuna gestione del postback, stai certo che ad ogni click di uqalunque pulsante presente nella pagina si riverifica il databind delle griglie!
Fammi sapere
Riccardo D'Aria
biroph
Profilo
| Junior Member
56
messaggi | Data Invio:
gio 20 feb 2014 - 18:42
1954_Headers.zip
il caricamento delle griglie deve avvenire nel page_load solo se non si tratta di postback.
Mi sono accorto che una delle 3 griglie mantiene sempre lo stato, ma le altre due lo perdono ogni qualvolta si effettua un postback, senza effettuare databind delle grliglie.
la differenza tra la griglieA che mantiene lo stato e le griglie B e C è che sia B che C hanno un header costruito dinamicamente, mentre A visualizza la header di default (i nomi dei campi).
Ho provato a non far creare la header dinamicamente e tutto funziona correttamente, sia B che C mantengono lo stato.
Il problema è che ho bisogno che le header vengano caricate da codice, perchè hanno una struttura un pò particolare (rowspan e altro), ma devo anche assicurarmi di non dover effettuare il databind ogni volta che si esegue un postback, perchè rallenta molto l'esecuzione della pagina.
In alternativa ho bisogno di creare un Header, anche staticamente, che abbia la struttura richiesta dal cliente. (vedi allegato)
spero di essere stato più esaustivo :)
Grazie per l'aiuto.
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
ven 21 feb 2014 - 04:34
>il caricamento delle griglie deve avvenire nel page_load solo
>se non si tratta di postback.
>Mi sono accorto che una delle 3 griglie mantiene sempre lo stato,
>ma le altre due lo perdono ogni qualvolta si effettua un postback,
>senza effettuare databind delle grliglie.
>la differenza tra la griglieA che mantiene lo stato e le griglie
>B e C è che sia B che C hanno un header costruito dinamicamente,
>mentre A visualizza la header di default (i nomi dei campi).
>Ho provato a non far creare la header dinamicamente e tutto funziona
>correttamente, sia B che C mantengono lo stato.
Tutto allora dipende da qui, perché è strano che se hai il databind al di fuori dei postback, queste griglie vengono bindate anche durante un postBAck.
Deve esserci qualcosa che cozza con la gestione dell'evento postback.
Se non ho codice alla mano non posso dirti più di tanto.
>Grazie per l'aiuto.
Prego
Riccardo D'Aria
Torna su
Stanze Forum
Elenco Threads
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 !