Caricare un articolo alla volta in listview mostrando il loading

lunedì 18 novembre 2013 - 15.01
Tag Elenco Tags  VB.NET  |  .NET 3.5

zseven Profilo | Senior Member

Ciao ragazzi,
sto provando ad ottenere l'effetto in oggetto.

In pratica ho un listview con un elenco di articoli che vorrei far comparire uno alla volta man mano che si completa il caricamento.

Sto provando utilizzando un timer_tick come evento ed un update panel, ma ottengo semplicemente la visualizzazione tutta insieme degli articoli e del loading, e non un progressivo mostrarsi degli articoli.

Il codice che sto provando è questo, ho un timer fuori al listview

<asp:Timer ID="Timer1" runat="server" Interval="1" OnTick="Timer1_Tick"> </asp:Timer>

poi all'interno dell'item ho un updateprogress per il loading e subito dopo un updatetemplace che contiene l'articolo che si trova un panel che ho resto invisibile.
Nel code behind all'item databound ho recuperato il panel e resto visibile, ma come vi ho detto non ho un caricamento progressivo degli articoli:

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

Spero di essere stato chiaro e che possiate aiutarmi.
Grazie mille!

ridaria Profilo | Expert

perdona la domanda fuori luogo.

Perchè vuoi ottenere questo effetto?

Domanda appropriata, invece: da dove leggi la lista delle voci con cui popoli il listView?


Ciao
Riccardo D'Aria

zseven Profilo | Senior Member

Ciao,
il motivo principale per cui voglio ottenere questo effetto è perché la query che popola il listview è molto molto complessa, e quindi il caricamento
finale richiede un po' di tempo.

Speravo che con una soluzioen di questo tipo fosse possibile far visualizzare gli articoli uno alla volta intanto che completa tutta l'elaborazione della query.

La sorgente è un sqldatasource con questa selectcommand che come ti dicevo è molto complessa.

Grazie

ridaria Profilo | Expert

ritengo che non sia percorribile. ciò che vuoi fare tu.

Vediamo la query sql magari si può intervenire su quella e rendere il popolamento più veloce.

Ciao

Riccardo D'Aria

zseven Profilo | Senior Member

Ciao, grazie per l'aiuto.

Come mai ritieni non percorribile quello che vorrei fare?

La query è la seguente, come vedi ho dovuto fare un campo calcolato e successivamente richiamare tutti i valori con un AS Tutto.

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

Fammi sapere se hai bisogno di chiarimenti sulla struttura per comprendere al meglio la query ;)

ridaria Profilo | Expert

poco percorribile perché la lettura dei dati è univoca, come fai ad intercettare la scrittura di un Item e poi fare il rendering a video del singolo item. mentre nel frattempo la query continua a trasmettere dati?

Vedo che la query è complessa, ma otterrai migliori risultati se costruisci una vista e quindi da questa leggi i singoli dati che ti occorrono.

Il concetto è semplice, tutta la query che usi, la lasci sul db per creare una vista, e quindi interroghi la sola vista.

HAi mai usato le viste?

Oppure la query in questione la piazzi sempre sul DB, ma come Stored Procedure, anche in questo caso otterrai dei miglioramenti in termini di tempo di esecuzione.

MA la migliore è una Vista


CIAO

fammi sapere
Riccardo D'Aria

zseven Profilo | Senior Member

sì sì ho lavorato con le viste.

Però avendo la necessità di utilizzare delle condizioni nel where la vista dovrebbe essere di tutti gli articoli e poi applicare il WHERE alla vista.

Pensi che così miglioro ugualmente le prestazioni? Anche se la vista va a leggere tutti e 30.000 articoli circa che vengono restuiti?

Per quanto riguarda l'altra soluzione forse per ottenere quel risultato (che ho visto su molti siti come privalia, saldi privati etc) bisogna lavorare più di jquery e fare operazioni ben più complesse?

Grazie mille!

ridaria Profilo | Expert

Con una vista migliori di certo le prestazioni. Certo la vista ti occorre proprio per creare da due o più tabelle una sola tabella che abbia i campi di una e dell'altra. é quello che fai con quella query string Vero?


L'altra soluzione sarebbe una Stored Procedure, ma un pò complessa se non ne hai mai create.

La soluzione che cerchi tu, a mio avviso e per ciò che conosco, con asp.net puro non la raggiungi.

Ma dimmi, quanti item vanno nella lisView?

Ciao fammi sapere come procede
Riccardo D'Aria

zseven Profilo | Senior Member

Con la vista purtroppo non posso farlo. Come immaginavo dovrei prima caricare TUTTI gli articoli e poi andarli a filtrare con il WHERE.

Cercherò di migliorare il tutto con una stored parametrizzata, le feci tanto tempo fa con asp 3.0 e poi le ho abbandonate (SBAGLIANDO!!).

Il listview al momento carica 24 articoli per pagina, non parliamo di grandi dati per singola pagina, ma parliamo di grandi dati in assoluto, come ti avevo scritto sono oltre 30.000 articoli.

Grazie mille, se dovessi avere problemi con la stored mi rifaccio vivo ;)
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5