mercoledì, gennaio 02, 2008

GridView, UpdatePanel e doppi click

Su vari post ho letto di persone che hanno problemi con GridView contenute in UpdatePanel Ajax.
Anche io ho trovato vari problemi. Il più strano è la necessità di premere 2 volte i linkbutton perchè questi facciano il loro lavoro. In realtà il postback avviene 2 volte ma la prima volta sembra andare perduto. La seconda volta funziona.
Facendo un po' di ricerche e di debug sembra che il primo post venga gestito come un"postback ajax" (passatemi questo termine) mentre il secondo è un trattato come un vero postback.
La soluzione che ho trovato è quello di registrare la GridView nella collezione dei Trigger del UpdatePanel che la contiene. Il trigger deve essere un PostBack e non un AsyncPostBack. In questo modo LinkButton tornano a funzionare al primo colpo.


<asp:updatepanel id="updtPnl" runat="server" updatemode="Conditional">
<contenttemplate>
<asp:gridview id="GV1">
.....
<asp:gridview>
</contenttemplate>
<triggers>
<asp:PostBackTrigger ControlID="GV1" />
<triggers>
<asp:updatepanel>


Anche la documentazione ufficiale relativa a PostBackTrigger sembra confermare questo uso. Non capisco però perchè funzioni con click in sequenza. Boh...


Probabilemente i problemi sono dovuti anche alla struttura abbastanza annidata dei componenti della mia pagina asp.net. In successione i "contenitori" sono:
- master page
- content page
- multiview
- view
- updatepanel
- gridview
- linkbutton (o imagebutton)


Sinceramente non ho fatto prove con una struttura più semplice. Appena trovo 10 minuti...

1 commento:

gigisector ha detto...

Ciao sono gigisector, grazie a questo tuo blog sono riuscito a perdere(investire) 4 ore del mio tempo per risolvere almeno il mio, spero anche il tuo problema. Prova ad utilizzare un SelectParameters sul Datacontrol della Detailsview e vedrai che tutto va bene(spero!!!). Ciao a presto