Salve a tutti e complimenti per lo splendido lavoro che fate... non mi stancherò mai di dirlo.
In una mia nuova applicazione sto usando il nuovo controllo messo a disposizione dal Framework 3.5 ovvero il Data Pager.
L'unico inconveniente che ho trovato è che per andare ai record successivi prensenti, magari nella pagina 2, devo cliccare due volte non consecutivamente sul numero 2 del controllo Data Pager.
Ho fatto queste operazioni:
1) Ho inserito il controllo ListView in una pagina e l'ho configurato in modo da mostrare i miei record e inoltre nel LayoutTemplate ho inserito il DataPager così da non doverlo collegare tramite proprietà; il codice risultante è il seguente:
<asp:ListView ID="ListView1" runat="server">
<LayoutTemplate>
<ul>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</ul>
<asp:DataPager ID="DataPager1" runat="server" PageSize="1">
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<li><%# Eval("name") %> <%# Eval("surname") %>
</li>
</ItemTemplate>
<ItemSeparatorTemplate>
<hr />
</ItemSeparatorTemplate>
<EmptyDataTemplate>
<div>
<b>Nothing to view!</b>
</div>
</EmptyDataTemplate>
</asp:ListView>
2) Nel code-behind della mia pagina ho inserito il codice per popolare la mia lista nell'evento load in questo modo:
Dim db As New DbSimphonyDataContext
Dim users = From u In db.sp_User _
Select u
ListView1.DataSource = users
ListView1.DataBind()
Ho usato linq con una query molto semplice per estrarre tutti gli utenti dal mio database.
Tutto funziona a meraviglia, la lista viene popolata e il datapager segnala che ci sono record successivi a quello visualizzato (ho inserito come paginazione solo un record per volta in modo da provare immediatamente la bontà del controllo); adesso però l'inconveniente è che devo cliccare due volte non consecutivamente per andare alla pagina successiva, è come se il controllo al primo click si legasse al controllo e al secondo eseguisse l'azione per cui è stato creato.
In che cosa sbaglio?
P.S.
Non sto usando un controllo datasource perchè ho necessita di creare query complesse che il controllo LinqDataSource non mette a disposizione, ad esempio non è possibile creare query con la clausola "like", o almeno non ci sono riuscito attraverso il controllo.
Spero di essere stato abbastanza chiaro nella spiegazione.
Grazie a tutti coloro che mi dedicheranno un pò di tempo.