Laden...

Datagrid füllen sehr langsam...

Erstellt von lupus vor 19 Jahren Letzter Beitrag vor 18 Jahren 2.386 Views
L
lupus Themenstarter:in
37 Beiträge seit 2005
vor 19 Jahren
Datagrid füllen sehr langsam...

Hallo,

ich habe ein Problem beim befüllen meines Datagrids. Zunächst einmal ein kleiner Code ausschnitt:

new public void RefreshContent()
{
for (int i = 0; i < ((SchemaDocumentationDoc)mDocument).CountTabelleOben; i++)
{
daten_tabellen.Rows.Add(i + 1,
((SchemaDocumentationDoc)mDocument).TableObenName_,
((SchemaDocumentationDoc)mDocument).TableObenOwner_,
((SchemaDocumentationDoc)mDocument).TableObenTablespace_,
((SchemaDocumentationDoc)mDocument).GetCode(((SchemaDocumentationDoc)mDocument).TableObenGruppe_),
((SchemaDocumentationDoc)mDocument).TableObenPK_Name_,
((SchemaDocumentationDoc)mDocument).TableObenSchlagwort_,
((SchemaDocumentationDoc)mDocument).TableObenKommentar_);

  }  

}

In den Arrays sind jeweils Daten aus eine Datenbank gespeichert. Nun zu meinem Problem:
Um so mehr Daten ich in den Array´s habe umso langsamer werden die Daten in das Datagrid geschrieben. Ich habe aber bis zu 1000 Datensätze und es ist unerträglich wie lange das füllen Des Datagrids dauert.

Gibt es eine andere Möglichkeit? Geht es mit AddRange besser? Wenn ja wie?
Meine versuche mit AddRange sind gescheitert.

vielen Dank,
Gruß Wolf

354 Beiträge seit 2004
vor 19 Jahren

Eines der Probleme ist sicherlich der doppelte Cast den du da für jede Spalte ausführst. Ein wenig beschleunigen kannst du das ganze eventuell, indem du vor deine Schleife ein

daten_tabellen.SuspendLayout();

und nach dem Durchlauf ein

daten_tabellen.ResumeLayout(true);

machst. Dadurch wird das Control nicht bei jedem Add neu gezeichnet. Ansonsten würd ich mir überlegen, ob es nicht einen anderen Weg gibt das DataGrid zu befüllen, denn das doppelte Casten kostet Zeit.

.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo nitronic,

verzeih, wenn ich da anderer Ansicht bin: Casten kostet so gut wie keine Zeit.

herbivore

L
lupus Themenstarter:in
37 Beiträge seit 2005
vor 19 Jahren

Hallo,

danke für die schnelle Antwort.

Das mit dem suspendlayout() habe ich leider schon ausprobiert. Hat nichts an Geschwindigkeit gebracht.

Hat wer ne Idee wie man das Datagrid noch befüllen kann?

Wolf

220 Beiträge seit 2004
vor 19 Jahren

Tach!

Also ich kenne ja die genaue Arbeitsweise Deines Programmes nicht. Vielleicht liege ich deshalb auch mit meinem Vorschlag daneben:

Ist es denn nicht möglich EINE Tabelle zu erstellen und das DataGrid einfach nur als DataSource dranzuhängen (Das sollte mit einer schlauen SELECT-Anweisung doch möglich sein!?)

Gruß
Guggsdu

L
lupus Themenstarter:in
37 Beiträge seit 2005
vor 19 Jahren

Moin,

ich es es mal mit der Datasource probiert. Ich habe alle Daten in eine Datatable geschrieben und diese dann als Datasource angegeben.

leider wird es ddurch nicht schneller.

gruß wolf

N
4.644 Beiträge seit 2004
vor 18 Jahren

Original von herbivore
Hallo nitronic,

verzeih, wenn ich da anderer Ansicht bin: Casten kostet so gut wie keine Zeit.

herbivore

Also kann man ja dann weiterhin ArrayList anstatt List<T> verwenden, oder was?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Noodles,

hier ging es ausschließlich um die Zeit, die Casten braucht. Ich hoffe du triffst deine Programmierentscheidungen nicht monokausal.

herbivore

N
4.644 Beiträge seit 2004
vor 18 Jahren

Original von herbivore
hier ging es ausschließlich um die Zeit, die Casten braucht. Ich hoffe du triffst deine Programmierentscheidungen nicht monokausal.

Keine andere Antwort habe ich von Dir erwartet!
Naja hauptsache mal gepostet.