Datagridview molto lenta

mercoledì 07 ottobre 2009 - 16.08

Idea Grip Profilo | Newbie

Buonasera a tutti nel forum

Ho caricato i dati di una tabella access in un dataset e successivamente in un datagridview con il seguente codice

For Each riga As DataRow In dataset.Tables("mag_pos1").Rows
C1 = riga.ItemArray.GetValue(3).ToString
C2 = riga.ItemArray.GetValue(4).ToString
C3 = riga.ItemArray.GetValue(6).ToString
C4 = Format(CDate(riga.ItemArray.GetValue(12).ToString), "dd/MM/yyyy")
If C4 = "01/01/2000" Then
C4 = ""
End If
C5 = riga.ItemArray.GetValue(8).ToString
C8 = riga.ItemArray.GetValue(11).ToString
C9 = riga.ItemArray.GetValue(13).ToString
C10 = riga.ItemArray.GetValue(14).ToString
C11 = riga.ItemArray.GetValue(15).ToString
C12 = riga.ItemArray.GetValue(16).ToString
C13 = riga.ItemArray.GetValue(0).ToString
C14 = riga.ItemArray.GetValue(9).ToString
C15 = riga.ItemArray.GetValue(2).ToString
C16 = riga.ItemArray.GetValue(17).ToString
If C16 = "" Then
C16 = 0
End If


Me.GrigliaPos.Rows.Add()
Me.GrigliaPos.Rows(rigasel).Cells(0).Value = C5
Me.GrigliaPos.Rows(rigasel).Cells(1).Value = C1
Me.GrigliaPos.Rows(rigasel).Cells(2).Value = C2
Me.GrigliaPos.Rows(rigasel).Cells(3).Value = C12
Me.GrigliaPos.Rows(rigasel).Cells(4).Value = C4
Me.GrigliaPos.Rows(rigasel).Cells(5).Value = C3
Me.GrigliaPos.Rows(rigasel).Cells(6).Value = C10
Me.GrigliaPos.Rows(rigasel).Cells(7).Value = C9
Me.GrigliaPos.Rows(rigasel).Cells(8).Value = C8
Me.GrigliaPos.Rows(rigasel).Cells(9).Value = C11
Me.GrigliaPos.Rows(rigasel).Cells(10).Value = "Mag_Pos1"
Me.GrigliaPos.Rows(rigasel).Cells(11).Value = C13
Me.GrigliaPos.Rows(rigasel).Cells(12).Value = C14
Me.GrigliaPos.Rows(rigasel).Cells(13).Value = C15
Me.GrigliaPos.Rows(rigasel).Cells(14).Value = Format(CType(C16, Decimal), "##0.000")
rigasel += 1
Next

Funziona correttamente, ma purtroppo è molto molto lenta, circa 27 secondi per caricare neanche 300 righe

qualche idea per velocizzare il tutto?

Grazie

alexmed Profilo | Guru

Ciao

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

Questo dovrebbe essere più veloce
Ciao

alexmed

Idea Grip Profilo | Newbie

Grazie Alexmed per la tua risposta, purtroppo mi son dimenticato di scrivere che quel passaggio si ripete per altre 9 volte, quindi nella griglia devo aggiungere i dati di altre 9 tabelle identiche.
Il datasource penso mi vincoli ad una sola tabella

alexmed Profilo | Guru

Ciao
Se i campi sono "uguali" puoi provare ad utilizzare la funzione UNION per unire le tabelle e poi caricarle su DGV.

http://msdn.microsoft.com/it-it/library/ms180026.aspx

Ciao

alexmed

Idea Grip Profilo | Newbie

Scusatemi il ritorno dopo tanto tempo, purtroppo non ho ancora risolto questo problema, anche con i vostri consigli.
Il problema è che i dati (creati da un'altra applicazione) vanno trattati.

Di seguito parte del codice dove controllo i dati:

C4 = Format(CDate(riga.ItemArray.GetValue(12).ToString), "dd/MM/yyyy")
If C4 = "01/01/2000" Then
C4 = ""
End If

e anche

C16 = riga.ItemArray.GetValue(17).ToString
If C16 = "" Then
C16 = 0
End If

No riesco a trovare un'alternativa valida per aumentare la velocità di scrittura sul datagridview
Grazie
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