Listview collegata a un datasource e record iniziali

mercoledì 01 febbraio 2012 - 13.11
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  CSS 3.0  |  HTML 5

totti240282 Profilo | Guru

Buona sera,
io ho una listview collegata ad un datasource, che a sua volta è collegato ad un tabella di moltissimi record.

Ora vorre che in fase di page load non vengano caricati tutti i record, e mi domandavo quale era la tecnica migliore per limitare inizialmente i record.

Ho pensato a queste soluzioni

1) Fare una top all'interno del datasource, poi in seguito alla creazione dei filtri annullare la top.

2)Non associare inizialmente l'id del datasource alla listview.

Cosa consigliate voi ?
C'è solo un capitano !!!!!!

alx_81 Profilo | Guru

>Buona sera,
Ciao

>Ora vorre che in fase di page load non vengano caricati tutti
>i record, e mi domandavo quale era la tecnica migliore per limitare
>inizialmente i record.
>Cosa consigliate voi ?
- puoi paginare e far fare le letture al database sotto (è un sql server? che versione?)
- puoi tornare la TOP n direttamente dal database (poi per i filtri puoi fare comunque la TOP n, tanto se filtri male sono sempre tantissimi i record)

non farei fare nulla a client. Perchè è già tardi..

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

totti240282 Profilo | Guru

E' un Sql server 2008.

Quindi mi conviene fare sempre e comunque una top anche quando è' l'utente a filtrare i dati ?

Grazie.
C'è solo un capitano !!!!!!

alx_81 Profilo | Guru

>Quindi mi conviene fare sempre e comunque una top anche quando
>è' l'utente a filtrare i dati ?
se ne ha veramente tanti, chi mai ne guarderà più di un TOT? è molto importante l'ordinamento piuttosto.
Si tratta di una pagina, non di un report.
Se servono tutti, utilizza infrastrutture atte alla stesura di report. Oppure un export dei dati fatto apposta.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

andrestu Profilo | Expert

io non mi preoccuperei più di tanto del listview quanto del datasource. Il listview di solito viene utilizzato con un datapager, quindi il carico è in relazione al numero di record che visualizzi per ogni pagina, niente di più.
In merito al TOP bisogna stare attenti però al modo in cui il datasource fa la richiesta dei dati e se utilizza un qualche metodo di cache.
Facendo un esempio ammettiamo che io faccio un TOP dei primi 1000 record e successivamente eseguo un ordinamento (per esempio per ID), sia che lo faccio ascendente che discendente non avrò mai gli ultimi record inseriti...

alx_81 Profilo | Guru

>io non mi preoccuperei più di tanto del listview quanto del datasource.
>Il listview di solito viene utilizzato con un datapager, quindi
>il carico è in relazione al numero di record che visualizzi per
>ogni pagina, niente di più.
certo, ha il carico lato client della sola pagina, ma il source che legge dal db fino al "web server" deve comunque ricavare TUTTI i record e poi prepararli paginati..
Comunque il traffico c'è.. e personalmente credo che, siccome si parla di interfaccia web e non di reportistica, sia meglio evitare carichi così eccessivi server to server in multiutenza.


>In merito al TOP bisogna stare attenti però al modo in cui il datasource fa la richiesta dei dati e se utilizza un qualche metodo di cache.
>Facendo un esempio ammettiamo che io faccio un TOP dei primi 1000 record e successivamente eseguo un ordinamento (per esempio per ID), sia che lo faccio ascendente che discendente non avrò mai gli ultimi >record inseriti...
esatto, concordo.. c'è da fare un po' di analisi in questi tipi di situazioni

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

andrestu Profilo | Expert

ecco si appunto, è un problema più che altro di datasource e rispettiva implementazione. Una cosa è certa, configurerei il datasource in modo che prelevi i dati da un qualche oggetto che fa da cache e non farei fare la chiamata diretta al db ogni volta.

Andrea Restucci - Web Developer
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5