31 messaggi dal 13 novembre 2007
Si, il punto è che apparentemente funziona in realtà invece quando vado a cliccare sul bottone della template column è come se non fosse cambiato l'indice della pagina.
Supponiamo di avere la datagrid che visualizza 5 elementi per pagina e di avere un totale di 10 elementi da visualizzare, io carico la pagina 1 quindi gli elementi 1-5 poi eseguo la pageindexchange e visivamente vedo gli elementi 6-20 però quando invoco la "e.Item.Cells[0].Text" sulla riga corrispondente al bottone cliccato(nella pagina 2) è come se in memoria lui avesse ancora i dati delle righe 1-5.

Spero di aver reso l'idea del comportamento errato.

Ciao e grazie mille
Simona
130 messaggi dal 26 agosto 2004
che strano,
sembra che quando tu fai il databind nel pageLoad lui considerasse il pageIndex = 0... questo potrebbe spiegare la cosa

puoi verificare quanto vale il pageIndex nel pageLoad, quando premi il pulsante sulla seconda pagina?

spero di essermi spiegato!

Stefano M.
31 messaggi dal 13 novembre 2007
In realtà nel momento in cui invoco la Load della "pagina2" il DataGrid.CurrentPageIndex vale 0, però subito dopo la Load eseguo la Item_Command e la PageIndexChange, funzione nella quale c'è la seguente istruzione:
dgRichieste.CurrentPageIndex = e.NewPageIndex;

Era questo che mi chiedevi vero?

Grazie mille
Simona
31 messaggi dal 13 novembre 2007
Si, in effetti facendo un po di prove ho visto che l'istruzione
<code>
dgRichieste.CurrentPageIndex = e.NewPageIndex;
</code>
viene eseguita se però una volta visualizzata la pagina 2 vado a vedere il valore della dgRichieste.CurrentPageIndex questo è tornato a 0.
Sapete mica il perchè? Mi sono persa un'istruzione da qualche parte?

Intanto grazie che almeno il problema ora è stato isolato!! :-)
130 messaggi dal 26 agosto 2004
ciao!
effettivamente e' un po strano...
prova a vedere che valore ha prima di passare a pagina 3 ?

chi sa, magari la proprieta' viene re-impostate dopo il pageLoad...

una cosa che potresti fare e' nel pageLoad evitare di fare il databind in caso di postback....

cmq indago e ti faccio sapere!
mi intriga il mistero!

Stefano M.
31 messaggi dal 13 novembre 2007
Dunque, qui ci stiamo sbattendo la testa per benino sulla cosa...
Effettivamente una volta caricata la pagina 2 e subito prima di caricare la pagina3 il DataGrid.CurrentPageIndex vale "2".
Sto seguendo il codice step by step e apparentemente non viene eseguito nessun comando, però appena viene inovcato un'evento di postback (o tramite il clik sul cambio pagina o tramite un click su aun'altro bottone della pagina) ecco che il valore della DataGrid.CurrentPageIndex viene resettato.
Però io in nessuna parte del codice gli dico di resettare il CurrentPageIndex.

Ho provato non fare il databind nella Load della pagina in caso di postback però in questo caso non viene più visualizzata la datagrid con la pagina2.

Ciao e grazie
Simona
31 messaggi dal 13 novembre 2007
Ok il DataGrid.CurrentPageIndex veniva reimpostato a 0 igni volta che eseguivo la postback perchè nella prima riga della pagina aspx c'era il comando:

<code>
EnableViewState ="false"
</code>

anzichè:
<code>
EnableViewState ="true"
</code>

però impostano a "true" questo comando appena clicco sul bottone della template column mi appare il seguente errore:

Argomento di postback o callback non valido. La convalida degli eventi viene abilitata mediante <pages enableEventValidation="true"/> nella configurazione oppure mediante <%@ Page EnableEventValidation="true" %> in una pagina. Per motivi di sicurezza, viene verificato che gli argomenti con cui eseguire il postback o il callback di eventi siano originati dal controllo server che ne aveva inizialmente eseguito il rendering. Se i dati sono validi e previsti, utilizzare il metodo ClientScriptManager.RegisterForEventValidation per registrare i dati di postback o callback per la convalida.


Quindi in sostanza non ho risolto l'errore ma l'ho solo sposato... :-(

Qualcuno ha idea di come risolvere la cosa?

Grazie mille
Simona
130 messaggi dal 26 agosto 2004
senza saper ne' leggere ne scrivere,
prova cosi:
metti EnableEventValidation="false"

l'alternativa e' non usare il view state, ma devi stare attenta a salvarti da qualche parte la pagina corrente! tipo metti tale valore in un campo hidden... e nel pageLoad aggiorni il valore di currentPageIndex in base a tale campo...

io prima davo per scontato il viewatate abilitato!

Stefano M.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.