65 messaggi dal 18 novembre 2005
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.
65 messaggi dal 18 novembre 2005
Ho trovato una soluzione grazie all'articolo di Marco Minerva del qual linko l'articolo:

http://blogs.ugidotnet.org/marcom/archive/2008/09/22/94117.aspx

è bastato aggiungere nel metodo PreRender della pagina un databind, e tutto ha iniziato a lavorare perfettamente.

    Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
        ListView1.DataBind()
    End Sub


Ora posso andare a dormire tranquillo.
Modificato da hyperzone il 18 aprile 2009 00.18 -

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.