63 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.
63 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.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC