C# Performance ImportRow

Registriert
Mai 2007
Beiträge
150
Hey ihr,

Hier ein Programmauszug:

Code:
DataRow[] erg = null;

erg = datatable.Select("Titel LIKE '*" + text + "*' OR Album LIKE '*" + text + "*' OR Artist LIKE '*" + text + "*'");

DataTable suche = new DataTable();

DataColumn[] c = datenbank.get_columns();   // Ein Array mit den Spalten wird zurückgegeben
suche.Columns.AddRange(c);

data_view.DataSource = suche;

foreach (DataRow a in erg)
{
         suche.ImportRow(a);
}

Das Problem ist, das bei einigen Tausend Zeilen die Performance von ImportRow nicht gut ist, und ca. 80% der Ausführungszeit in Anspruch nimmt. Hat jemand eine Idee für eine Verbesserung?

lg Stefan
 
kannst du nicht einfach suche.Rows.AddRange(erg) machen? dann die zuordnung zur datenquelle und databind
 
Freeman4gu schrieb:
kannst du nicht einfach suche.Rows.AddRange(erg) machen? dann die zuordnung zur datenquelle und databind

Dann kommt witzigerweise eine Argumentexception, das das Eingabearray länger ist, als es Spalten in der Tabelle gibt. Keine Ahnung warum. Laut Intellitrace ist beides gleich lang.

Spezi schrieb:
Kann es sein, dass durch ImportRow die GUI für jede einzelne row aktualisiert wird?

Wenn ja, probier mal die datasource erst nach ImportRow zu setzen.

Das scheint tatsächlich was gebracht zu haben! Und ja, du hast recht. Vorher konnte man zusehen, wie in der DataGridView der Scrollbalken immer kleiner wurde, also immer eine Zeile hinzukam. Das ist jetzt nicht mehr so, und die Ansicht wird erst nach dem Laden aktualisiert.

Vielen Dank euch beiden!
 
Zurück
Oben