Lentezza caricamento DataGridView

venerdì 17 aprile 2015 - 00.46
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server 2008 R2  |  MySQL 5.5  |  Oracle 11g  |  Access (.mdb)  |  Office 2010  |  Crystal Reports XI

gabbito Profilo | Newbie

Salve a tutti
io avrei questo tipo di problema. Ho una dataGridview NON associata a nessun DB la prima volta che eseguo il suo riempimento è velocissima se poi rieseguo una nuova ricerca l'applicativo si blocca per circa 20 secondi. Se chiudo la form e la riapro e eseguo nuovamente il popolamento è di nuovo veloce. Sto diventando pazzo a capire come risolvere il problema ovviamente la griglia in fase di caricamento viene resa invisibile. Vi è capitato anche a voi questo problema? Come l'avete risolto?

GRAZIEEEE

jekisi Profilo | Senior Member

Quando riempi da dove prendi i dati e che codice usi.

gabbito Profilo | Newbie

Salve jekisi
per prima cosa riempio un datareader e con un loop leggo tutti i dati ed a "mano" li inserisco nella griglia. La cosa assurda è che quando apro per la prima volta la form il caricamento è velocissimo il problema nasce dalla seconda volta che vado a leggere i dati è come se rimanesse qualcosa in memoria che rallenta di brutto il caricamento della griglia.

willy_80 Profilo | Senior Member

Ciao probabilmente il rallentamento è dato dal fatto che per fare una ricerca devi puntare cella per cella leggerne il valore e confrontarlo col dato che vuoi ottenere.
Pure io nei miei programmi devo molto spesso gestire una discreta quantità di dati ma di solito butto sempre tutto in un dataset e passo alla datagrid la tabella che voglio visualizzare in modo che quando devo fare una ricerca è sufficiente eseguire una query nel dataset, trovo sia molto semplice e rapido, se gestisci i dati usando i controlli come supporto è inevitabile incappare nei classici ritardi dovuti a redraw grafici o simili.
Questa è la mia opinione.

gabbito Profilo | Newbie

Ciao Willy
non è così scorro il datareader e lo inserisco in griglia e come ti ripeto la prima volta va che è un piacere anche con molti dati è dalla seconda volta che si verifica in debug risulta lento il comando di "add row" e non mi spiego proprio come sia possibile. Il fatto di riempire un dataset non è percorribile perché nel mio caso devo fare dei conteggi ed inserire dei totali per data e progressivo. Il problema è che rimane almeno credo qualcosa in griglia è come se non avesse più memoria anche se questa viene "resettata" tra impostazioni di clear riga e clear colonna ed il tutto impostato su nothing.

jekisi Profilo | Senior Member

Forse non ci siamo capiti.

Da dove prendi i dati.

Tu stai facendo una bella cavolata secondo me.

gabbito Profilo | Newbie

Che cosa intendi per dove prendo i dati? TI posso dire che è un db sqlserver apro la connessione eseguo una executereader preparo la datagrid (NON LEGATA AD UN DATASET) inserendo le colonne che mi servono inizio il ciclo di lettura ad ogni loop faccio una addrow ... di cosa hai bisogno per capire dove sto sbagliando?

jekisi Profilo | Senior Member

E perchè non fai un dataset e poi fai il resto?

Basterebbe fare un Fill


Mi sa che non posso aiutarti.

gabbito Profilo | Newbie

Questo è un "pezzo" di codice che si trova all'interno del loop. In allegato il risultato che mostro a video
dgvRicerca.Rows.Add()
dgvRicerca.Rows(dgvRicerca.RowCount - 1).Height = 4
dgvRicerca.Rows.Add("", "", "", "", "", "", "", "", "", "", "", "IMPONIBILE", "", "", String.Format("{0:f2}", TotaleImponibile))

1129x927 221Kb

LA COSA STRANA TORNO A RIPETERE E' CHE LA PRIMA VOLTA E' VELOCE MA DALLE SECONDA VOLTA ANCHE SENZA CAMBIARE I CRITERI DI FILTRAGGIO CI METTE MOLTO TEMPO E' COME SE RIMANESSE QUALCOSA IN MEMORIA DELLA GRIGLIA.





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