Laden...

Combobox an DataTable binden mit > 300.000 Datensätzen

Erstellt von kraeppy vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.298 Views
K
kraeppy Themenstarter:in
50 Beiträge seit 2010
vor 8 Jahren
Combobox an DataTable binden mit > 300.000 Datensätzen

hallo zusammen 😃

ich habe folgendes Problem:

es gibt eine auswahlmaske, u.a. eine Combobox die sich an eine Tabelle binden soll.
die Tabelle hat mehr als 300.000 datensätze und sie wird nicht kleiner!

die SQL-abfrage geht relativ zügig, nur wenn ich display- und value-member der Combobox setze und die Tabelle anschließend an die Combobox binden möchte, dauert das ganze Prozedere über eine Minute und das ist nicht wirklich schön.

ich steh grad auf dem schlauch, was man da sonst noch machen kann....

jemand von euch ne schöne Idee parat?

beste grüße und angenehmen tag 😉

2.207 Beiträge seit 2011
vor 8 Jahren

Lager das Ganze in einen Background-Thread aus. Und stell dir die Frage: Wer kann 300.000 und mehr Datensätze auf einmal lesen? 😉 Schafft kein Mensch. Daher hol weniger und lad die Daten nach.

[FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)
[Artikel] Multi-Threaded Programmierung

Gruss

Coffeebean

F
10.010 Beiträge seit 2004
vor 8 Jahren

@Coffeebean:

Lager das Ganze in einen Background-Thread aus.

Genau das geht hier nicht, ist ja UI Thread.

@kraeppy:
Das ist nicht wirklich dein ernst, 300.000 Datensätze in eine ComboBox zu binden, oder?

K
kraeppy Themenstarter:in
50 Beiträge seit 2010
vor 8 Jahren

ich würds ja gerne anders machen, aber habe wie gesagt gerade keine schöne Idee es besser zu machen -.-

ich überführe zz ne alte access-Anwendung und dort wurde es so gemacht, dass die Tabelle an eine Combobox gebunden wurde, sodass der benutzer einen wert auswählen konnte, mit dem gearbeitet (ändern/löschen) werden konnte....

Anforderung ist eben, dass gui etc so gut wie gleich bleiben soll 😕

würd ja auch lieber n datagridview nehmen, vorher filter setzen, sodass relativ wenig angezeigt wird und der benutzer sich den zu bearbeitenden datensatz auswählen kann... ist aber leider net gewünscht -.-

463 Beiträge seit 2009
vor 8 Jahren

Und wer soll aus einer Auswahl von 300.000 Datensätze einen Eintrag finden? Meiner Meinung nach ist dieser Ansatz der komplett falsche Weg!

W
955 Beiträge seit 2010
vor 8 Jahren

Hi,

Du könntest mal nach einem geeigneten Autocomplete-Control o.ä. suchen. Da müssen nicht alle angezeigt werden und der Benutzer sieht eine Auswahl die zu seinem Suchbegriff passt.

H
523 Beiträge seit 2008
vor 8 Jahren

Anforderung ist eben, dass gui etc so gut wie gleich bleiben soll 😕

Zeig demjenigen der die Anforderung gestellt hat doch einfach mal die Performance Deiner aktuellen Version und überlege dann mit ihm zusammen eine alternative Lösung, wie z. B. eine separate Suchmaske.

Alternativ gibt es auch Comboboxen/Dropdowns von Drittherstellern bei denen das Binden der Daten deutlich schneller geht. Ich habe' gerade das Dropdown-Control von Telerik getestet, da brauchen 300.000 Datensätze zum Binden an das Control 5 Sekunden.

463 Beiträge seit 2009
vor 8 Jahren

Sorry, aber unabhängig von der Zeit - es macht keinen Sinn 300.000 Einträge in eine Combobox zu packen.... Wer soll diese auswählen?

W
955 Beiträge seit 2010
vor 8 Jahren

@Stefan.Haegele
In Access konnte man in einer ComboBox Text eintippen, das Teil sprang dann zum ersten gefundenen Satz. Das haben Generationen an PowerUsern so verwendet, jetzt bekommen sie eine neue Software und wollen unbedingt diese veraltete Funktionalität weiter verwenden. Das ist leider in der Praxis häufiger so.

463 Beiträge seit 2009
vor 8 Jahren

@Witte

Und da ist es Aufgabe des Entwickler zu sagen, dass dieser Weg falsch ist... Manchmal muss man seine Kunden/Vorgesetzte auch etwas zu ihrem Glück zwingen..

F
10.010 Beiträge seit 2004
vor 8 Jahren

Naja, das kann man auch ganz einfach anders lösen.

Eine TextBox, einen Timer und erst wenn mehr als 3 Zeichen eingegeben wurden
wird mit filter gelesen.
Das reduziert die Menge meist auf hunderte.
Danach kann man ja dann auf autocomplete "umsteigen".

Ist deutlich Performanter als das Binden der CB an die ganze liste.