Domanda

Ho alcune tabelle nel mio database con circa 7K righe e ne ho bisogno fare un rapporto sul sito web (asp.net) con formulazione personalizzata, tabella pivot come dettagli.

Qual è la soluzione migliore per questo, perché quando eseguo il rendering ad esempio ripetitore con questa quantità di dati è molto lento.

Grazie per il consiglio

È stato utile?

Soluzione

Se non vuoi il paging, probabilmente avrai bisogno di un po 'di AJAX per recuperare le righe mentre scorri e possibilmente rimuovere le righe mentre scorrono fuori dalla vista, se devi conservare la memoria.

Altri suggerimenti

Disattiva il viewstate

A meno che non sia necessario

Page.EnableViewState = false;

Dividi la tabella

Se non vuoi scendere lungo il percorso di paging, puoi anche provare a dividere un <table> grande in diversi </table> s più piccoli. (In passato il browser poteva eseguire il rendering di un tavolo solo dopo aver visto il crap * 7000 = alot of crap finale. Non sono sicuro che sia ancora vero, ma sicuramente vale la pena provare)

Sbarazzati della merda

Assicurati di usare css e non cose come

<td width="40" valign="top"> 50 </td>
<td class="a"> 50 </td> <!-- better  -->
<td>50</td> <!-- best  -->
<!-- if you need to specify a width, you only need to do it in one row  -->

Ricorda <=>

Riduci le dimensioni della pagina a tutti i costi

A volte il problema non è il rendering della pagina, ma è il download che causa il problema, quindi dai un'occhiata.

Le tabelle nidificate ti faranno davvero male

Nuff ha detto

Suggerirei di usare il paging.

Considerando una riga tipica come questa:

<tr><td>ID</td><td>Some data</td><td>More and more data</td></tr>

Ogni riga ha 66 caratteri, quindi avere 7k righe sommerebbe quasi 500k di dati. E questo è molto per un display web.

Quindi, se vuoi davvero visualizzare tutto in una pagina, mantienilo minimo:

  • Non sprecare spazi
  • Non utilizzare gli attributi se non assolutamente inevitabili
  • Non usare class = " " se non hai classi diverse per righe diverse (applica invece la stessa classe a tutte le righe)

Ad ogni modo, a seconda del computer di destinazione + del browser, questo potrebbe diventare davvero slooow se le tue file sono più grandi.

Non dici quale lingua stai usando, ma la menzione di un ripetitore suggerisce ASP.Net? Nella mia esperienza, l'associazione di dati a un DataGrid è più rapida su set di dati più grandi.

MA, devo chiedermi perché vorresti visualizzare così tanti dati su una pagina web. Nessun utente nella sua mente corretta si siederebbe e scorrerebbe tutti quei dati e trovarli utili. Limitare i dati a dati pertinenti che saranno utili all'utente, generalmente filtrati su meno di 100 righe.

IMO, un rapporto con così tanti dati è inutile, indipendentemente dal formato, ma se devi assolutamente avere tutto per un rapporto stampato o simile, considera invece di generare un documento PDF sul server.

Potrebbe voler provare uno strumento di reporting personalizzato per molti dati. La mia azienda crea uno strumento chiamato RSinteract (spina spudorata). Che utilizza i servizi di reportistica di SQL Server.

Se vuoi semplicemente scaricare i dati. Presumo che il browser si stia bloccando mentre lo esegue il rendering o mentre la query è in esecuzione. Se sai qual è il tuo browser di destinazione ... potresti usare un & Quot; Altro ... & Quot; link per ottenere il prossimo set di dati e avere un limite di 1000 righe. Tuttavia ciò influirebbe sulla ricerca Ctrl + F. Simile al paging, ma immagino che la responsabilità sia nelle mani dell'utente.

Se stai davvero cercando il " best " soluzione per un " web app " ;, ti suggerirei palesemente di usare Flash / Flex per il rendering efficiente di molte righe. Se usare qualcosa oltre l'HTML di base non è un'opzione, suggerirei di recuperare dinamicamente nuove righe mentre l'utente scorre come suggerito da @mbeckish ...

Ho usato le griglie Dev Express per un cliente per gestire i rapporti e loro lo adorano (anche se avrei preferito avere il mio!)

Vedi http://demos.devexpress.com/ASPxGridViewDemos/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top