Ich habe mir vor 2-3 Jahren ein UserControl gebaut, mit einem DataGridView, welches eine Zeile zur Filterung der Datensätze enthält. (siehe Anhang)
An das DatagridView des UC lassen sich die unterschiedlichsten Daten per DataView als Source zuweisen.
Die Datenfelder werden aus einer Auswahl zusammengestellt und dann einmalig aus der Datenbank geladen.
Wir benutzen dieses UC für verschiedene Programme, z.B. für Artikeldaten, Lieferanten- Kunden und auch Umsatzdaten.
Es ist Bestandteil einiger Programme (in VB und auch C#) und leistet gute Dienste. (Gesamtdatensätze meist zwischen 5.000 und 100.000)
In der Regel werden nach Auswahl einer Zeile im DataGridview des UC dann Detaildaten im unteren Bereich (außerhalb des UC geladen.
Eigentlich funktioniert es ganz prima bis auf die Zeitverzögerung je nach Suchworteingabe.
Kopiere ich komplette Suchwörter in die Filterzeile ist alles i.O.
Auch die Filterung über mehreren Spalten und damit der Zusammenbau der Filter im Code ist akzeptabel.
Es hängt an den Einzelzeichen:
Wird das Suchwort eingetippt, fängt das Programm bereits bei Einzelbuchstaben an zu filtern und mit jedem Zeichen wird die Zeitverzögerung größer.
Z. B. bei langen komplexen Artikelnummern ist das nicht mehr wirklich angenehm.
Es ist einerseits gewünscht, dass die Filterung bei Einzelzeichen beginnt, wenn z.B. die komplette Artikelnummer nicht bekannt ist oder man mehrere Varianten angezeigt haben möchte
Andererseits ist diese Verzögerung sehr lästig.
Ich sinne schon eine Weile darüber nach, wie ich diese Filterung optimieren könnte.
Für den Abruf der Detaildaten benutze ich teilweise Threads, um umfangreiche Daten (auch aus unterschiedlichen Datenbanken) parallel abzurufen, was an dieser Stelle spürbare Beschleunigung bringt.
Deshalb habe ich bei der Filterung schon mal mit einem Threadpool experimentiert. Das hat aber auch nichts gebracht.
Irgendwie wäre es toll, wenn mehrere Buchstaben/Zeichen eingegeben werden, dass die vorangegangene Suche sofort abgebrochen wird u.s.w. bis man am Ende der Eingabe sofort das Ergebnis der letzten Filterung bekommt.
Ich habe aber keinen Plan, wie man das erreichen kann.
Hat jemand in diesem Bereich schon Erfahrungen?
An das DatagridView des UC lassen sich die unterschiedlichsten Daten per DataView als Source zuweisen.
Die Datenfelder werden aus einer Auswahl zusammengestellt und dann einmalig aus der Datenbank geladen.
Wir benutzen dieses UC für verschiedene Programme, z.B. für Artikeldaten, Lieferanten- Kunden und auch Umsatzdaten.
Es ist Bestandteil einiger Programme (in VB und auch C#) und leistet gute Dienste. (Gesamtdatensätze meist zwischen 5.000 und 100.000)
In der Regel werden nach Auswahl einer Zeile im DataGridview des UC dann Detaildaten im unteren Bereich (außerhalb des UC geladen.
Eigentlich funktioniert es ganz prima bis auf die Zeitverzögerung je nach Suchworteingabe.
Kopiere ich komplette Suchwörter in die Filterzeile ist alles i.O.
Auch die Filterung über mehreren Spalten und damit der Zusammenbau der Filter im Code ist akzeptabel.
Es hängt an den Einzelzeichen:
Wird das Suchwort eingetippt, fängt das Programm bereits bei Einzelbuchstaben an zu filtern und mit jedem Zeichen wird die Zeitverzögerung größer.
Z. B. bei langen komplexen Artikelnummern ist das nicht mehr wirklich angenehm.
Es ist einerseits gewünscht, dass die Filterung bei Einzelzeichen beginnt, wenn z.B. die komplette Artikelnummer nicht bekannt ist oder man mehrere Varianten angezeigt haben möchte
Andererseits ist diese Verzögerung sehr lästig.
Ich sinne schon eine Weile darüber nach, wie ich diese Filterung optimieren könnte.
Für den Abruf der Detaildaten benutze ich teilweise Threads, um umfangreiche Daten (auch aus unterschiedlichen Datenbanken) parallel abzurufen, was an dieser Stelle spürbare Beschleunigung bringt.
Deshalb habe ich bei der Filterung schon mal mit einem Threadpool experimentiert. Das hat aber auch nichts gebracht.
Irgendwie wäre es toll, wenn mehrere Buchstaben/Zeichen eingegeben werden, dass die vorangegangene Suche sofort abgebrochen wird u.s.w. bis man am Ende der Eingabe sofort das Ergebnis der letzten Filterung bekommt.
Ich habe aber keinen Plan, wie man das erreichen kann.
Hat jemand in diesem Bereich schon Erfahrungen?