3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Non usando i datasource devi usare la paginazione nel gridview come se fosse il 'vecchio' datagrid. Niente di complicato. L'unico problema nel tuo caso è la scelta del tipo di paginazione che vuoi utilizzare con MySql. Limit, come saprai, permette la paginazione direttamente da database, ma il problema è che il GridView non permette il paginazione custom come il datagrid.
Se vuoi continuare ad usare la paginazione del gridview non puoi utilizzare il limit. Ad ogni postback dovrai tornare tutti i record della query al gridview (e al tuo datatable) che penserà lui alla paginazione.
In questo caso devi utilizzare, come detto sopra, gli eventi del gridview:
<asp:GridView ID="gw1" runat="server" AllowPaging="True"
OnPageIndexChanging="gw1_PageIndexChanging">
....

Al cambio pagina il solito codice:

protected sub gw1_PageIndexChanging(sender as object, e as GridViewPageEventArgs)
gw1.PageIndex = e.NewPageIndex
BindData()
end sub

La funzione BindData è la tua routine che richiede i dati e li inserisce nel datatable e che "binda" i dati nel gridview. Unico accorgimento è nel Page_Load:

Sub Page_Load()
if Page.IsPostBack then return
BindData();
end sub

Ma la soluzione migliore è usare la paginazione manuale dei dati. Innanzitutto devi sapere quanti dati restituisce la query, quindi da codice richiedere i dati con il "limit" nella query per richiedere solo i dati necessari. Per esempio:
#659

In questo modo la pagina da visualizzare la passi direttamente come parametro di pagina.

Ciao
53 messaggi dal 06 settembre 2002
Perfetto, mi mancava la:

protected sub gw1_PageIndexChanging(sender as object, e as GridViewPageEventArgs)
gw1.PageIndex = e.NewPageIndex
BindData()
end sub

Grazie,
Francesco

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.