Hi,
Ich habe eine kleine Kundensuche, die aus einer TextBox und einem DataGrid besteht.
Das DataGrid lädt > 1.000.000 Datensätze, wie folgt:
Wenn nun in die TextBox etwas eingegeben wird, soll das DataGrid gefiltert werden, das bewerkstellige ich aktuell über den RowFilter der DefaultView beim TextBox-Ereignis TextChanged:
Grundsätzlich funktioniert das auch und verwende ich in vielen anderen Tools auch so, da sind allerdings deutlich weniger Datensätze.
Das Problem hierbei ist, dass durch die Datenmenge der RowFilter sehr langsam ist, tlw. bis zu 3 Sekunden pro Zeichen-Eingabe in der TextBox.
Die Anzahl der Datensätze kann ich an der Stelle nicht weiter verringern, weil in all denen gesucht werden muss.
Gib es eine bessere Variante, die Liste zu filtern, damit es flüssiger läuft?
Danke
Ich habe eine kleine Kundensuche, die aus einer TextBox und einem DataGrid besteht.
Das DataGrid lädt > 1.000.000 Datensätze, wie folgt:
Code:
using (SqlConnection conn = new SqlConnection(Properties.Resources.SqlConnectionString)) { using (SqlDataAdapter adp = new SqlDataAdapter(Properties.Resources.SqlLoadCustomerSearchList, conn)) { adp.SelectCommand.Parameters.AddWithValue("@mandant", 1); adp.Fill(this.CustomerData); // CustomerData ist eine DataTable } }
Code:
if (this.CustomerData.Rows.Count < 1) return; this.CustomerData.DefaultView.RowFilter = string.Format( "SearchMatchcode like '%{0}%'", this.txtCustomerFilter.Text.Trim() );
Das Problem hierbei ist, dass durch die Datenmenge der RowFilter sehr langsam ist, tlw. bis zu 3 Sekunden pro Zeichen-Eingabe in der TextBox.
Die Anzahl der Datensätze kann ich an der Stelle nicht weiter verringern, weil in all denen gesucht werden muss.
Gib es eine bessere Variante, die Liste zu filtern, damit es flüssiger läuft?
Danke
Comment