Problemi con la paginazione della GridView & Ajax

GridView

Durante la realizzazione di un'applicazione Web, mi stavo occupando della gestione degli utenti; ho utilizzato

una GridView (con paginazione) per la visualizzazione degli utenti (vedi figura).

Per consentire una gestione più semplice ed intuitiva degli utenti ho impostato dei pulsanti sotto la GridView.

Il tutto naturalmente era stato inserito in un UpdatePanel permettendo all'utente di avere un'ottima user-

experience (vedi codice).


<
asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
        </asp:ScriptManagerProxy>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:GridView ID="gvUtenti" runat="server" AllowPaging="True"
                    PageSize="10" DataSourceID="odsUtenti" >
                    <PagerSettings Mode="NumericFirstLast" Position="TopAndBottom" />
                    <Columns>
                        <asp:BoundField DataField="UserName" HeaderText="User name" />
                        <asp:BoundField DataField="Email" HeaderText="Indirizzo E-mail" />
                        <asp:BoundField DataField="RoleName" HeaderText="Stato" />
                         <asp:TemplateField>
                            <ItemTemplate>
                                <asp:ImageButton ID="Details" runat="server"
                                                ImageUrl="Percorso Immagine" /></ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:CheckBox ID="Select" runat="server"
                                                Checked="false" /></ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <EmptyDataTemplate>
                        Non ci sono utenti</EmptyDataTemplate>
                </asp:GridView>
                <asp:ObjectDataSource ID="odsUtenti" runat="server"
                       SelectMethod="SelezionaUtenti" TypeName="ClassManagerUstenti">
               
</asp:ObjectDataSource>
                </div>
                <p>
                    <asp:ImageButton ID="SelectAll" runat="server"
                                 ImageUrl="Percorso immagine"/>
                    <asp:ImageButton ID="cmd1" runat="server" 
                                 ImageUrl="Percorso immagine" />
                    <asp:ImageButton ID="cmd2" runat="server"
                                 ImageUrl="Percorso immagine"/>
                    <asp:ImageButton ID="Delete" runat="server" 
                                 ImageUrl="Percorso immagine"/>
                </p>
            </ContentTemplate>
        </asp:UpdatePanel>

È a questo punto che sono iniziati i problemi in quanto quando passavo da una pagina all'altra della GridView i pulsanti inseriti per la gestione degli

utenti venivano raddoppiati  smile_angry (vedi figura).GridView1

Dopo aver fatto diverse prove ho pensato che il problema potesse essere legato all'UpdatePanel, infatti

rimuovendo completamente l'UpdatePanel la duplicazione dei pulsanti non si verificava più, ma veniva

compromessa la user-experience dell'utente. Comunque avevo focalizzato il problema, era legato al rendering

dell'UpdatePanel quindi legato alle librerie Ajax.

Il problema si risolve molto semplicemente utilizzando due UpdatePanel uno per la GridView e l'altro per i pulsanti (vedi codice).

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
        </asp:ScriptManagerProxy>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:GridView ID="gvUtenti" runat="server" AllowPaging="True"
                    PageSize="10" DataSourceID="odsUtenti">
                    <PagerSettings Mode="NumericFirstLast" Position="TopAndBottom" />
                    <Columns>
                        <asp:BoundField DataField="UserName" HeaderText="User name" />
                        <asp:BoundField DataField="Email" HeaderText="Indirizzo E-mail" />
                        <asp:BoundField DataField="RoleName" HeaderText="Stato" />
    		        <asp:TemplateField>
                          <ItemTemplate>
                            <asp:ImageButton ID="Details" runat="server" 
ImageUrl="Percorso Immagine" />
</ItemTemplate> </asp:TemplateField> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="Select" runat="server"
Checked="false" />
</ItemTemplate> </asp:TemplateField> </Columns> <EmptyDataTemplate> Non ci sono utenti</EmptyDataTemplate> </asp:GridView> <asp:ObjectDataSource ID="odsUtenti" runat="server"
SelectMethod="SelezionaUtenti" TypeName="ClassManagerUtenti">
</asp:ObjectDataSource> </div> </ContentTemplate> </asp:UpdatePanel> <asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <p> <asp:ImageButton ID="SelectAll" runat="server"
ImageUrl="Percorso immagine"/> <asp:ImageButton ID="cmd1" runat="server"
ImageUrl="Percorso immagine" /> <asp:ImageButton ID="cmd2" runat="server"
ImageUrl="Percorso immagine"/> <asp:ImageButton ID="Delete" runat="server"
ImageUrl="Percorso immagine"/> </p> </ContentTemplate> </asp:UpdatePanel>

GridView2

Dopo aver inserito i due UpdatePanel quando si cambia pagina alla GridView, i pulsanti non vengono duplicati

smile_tongue (vedi figura).

Published Friday, October 10, 2008 2:10 AM by MADIL
Filed under: ,

Comments

# re: Problemi con la paginazione della GridView & Ajax

Friday, November 21, 2008 2:10 AM by alfonso

salve Madil,

Io mi trovo innanzi ad un problema simile...

:-(

Potresti inviarmi un codice simile di esempio funzionale?

Grazie in anticipo

Powered by Community Server (Commercial Edition), by Telligent Systems