ListView con .NET 3.5

venerdì 30 ottobre 2009 - 17.56

zseven Profilo | Senior Member

Ciao ragazzi,
come da oggetto stavo vedendo un pò il funzionamento del listview, e volevo chiedervi una cosa.

Negli esempi riporta sempre che il controllo listview viene associato ad un ID di sorgente dati, mentre io, collegandolo ad un DB access ho semplicemente fatto da code behind la seguente sintassi:

LstPortfolio.DataSource = MYDS LstPortfolio.DataMember = "tab_portfolio" LstPortfolio.DataBind()

uguale a come facevo con datalist e datareapter insomma.

Facendo in questo modo funziona tutto correttamente tranne il datapager.
Quando clicco sul numero della paginazione invece di passare alla pagina successiva resta su quella attuale, e solo dopo che riclicco sulla pagina da visualizzare mi sposta.
E' come se avesse un ritardo...
Il listview è il seguente se magari ho commesso qualche errore.

<asp:ListView ID="LstPortfolio" runat="server"> <LayoutTemplate> <table width="900" border="0" cellspacing="0" cellpadding="5" id="table1" runat="server" > <tr runat="server" id="itemPlaceholder" ></tr> </table> <asp:DataPager runat="server" ID="DataPager" PageSize="5"> <Fields> <asp:NumericPagerField ButtonCount="3" PreviousPageText="<" NextPageText=">" /> </Fields> </asp:DataPager> </LayoutTemplate> <ItemTemplate> <tr> <td width="130" height="42" align="left" valign="top"> <%#CFoto(Eval("foto_portfolio"))%> </td> <td width="780" align="left" valign="top" class="testo"> <span class="titolo_port"><b><%#Eval("titolo_portfolio")%></b></span><br /> <%#CReplace(Eval("testo_portfolio"))%> </td> </tr> </ItemTemplate> </asp:ListView>

Sapete dirmi in cosa ho sbagliato?
Grazie mille

Pinky Profilo | Junior Member

Ho ricreato il tuo problema.
Unica differenza, ho messo il DataPager fuori del ListView e gli setto la proprietà "PagedControlID".
Ho il tuo stesso comportamento.

Basandomi su questo: http://forums.asp.net/p/1260300/2354029.aspx

Ho messo il metodo LoadNews(), che è il mio metodo per settare il DataSource e chiamare il DataBind, nell 'evento PreRender della pagina.

Funziona, ma mi rimangono delle perplessità...

ciao
Alessandro

zseven Profilo | Senior Member

Avevo immaginato che fosse un problema legato al Prerender.

Ho provato così ad impostare il caricamento dati direttamente da un sqlDataSource, e facendo così la navigazione fra le pagine è corretta.

La mia perplessità però nasce su quest'altro problema.

Il mio DataPager è il seguente:

<asp:DataPager runat="server" ID="DataPager" PageSize="10"> <Fields> <asp:NumericPagerField ButtonCount="3" PreviousPageText="Precedente" NextPageText="Successiva" /> </Fields> </asp:DataPager>

Quando clicco su Successiva stando nella prima pagina lui mi porta direttamente alla pagina 4, e non alla pagina successiva.
Ho sbagliato io qualcosa?

Cioè in pratica vorrei che ci fosse sia il pulsante spostati di una pagina che quello spostati all'ultima pagina, ma non un pulsante che mi sposta al primo valore non visibile in paginazione.
Non so se sono riuscito a spiegarmi bene.

Grazie mille

Pinky Profilo | Junior Member

I bottoni che ti crea il NumericPageField sono un modo diverso di navigare la paginazione.
In pratica sono alternativi ai classici First-Prev-Next-Last
Il Successivo e Precedente che ottieni si riferiscono al "paginatore", non alla pagina. Ovvero se tu sei a pagina 1 del primo "gruppo" di pagina (pag. 1,2,3) premendo "Successiva" ti sposti al secondo gruppo di bottoni, ovvero la seconda pagina del paginatore (pag. 4,5,6).

Non so se mi sono fatto capire, comunque per avere anche i "classici" Prev e Next io ho fatto così, non so se è il modo migliore.
Li ho voluti inserire "agli estremi" dei numeri pagina, per questo sono due.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao

zseven Profilo | Senior Member

Sei stato chiarissimo, era proprio quello il problema che avevo.
ho utilizzato il tuo codice per il datapager e fuziona benissimo!

Grazie mille!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5