Entwickler-Ecke
WinForms - Combobox - Text und Value wie bei HTML-Select?
Realnub - Fr 11.04.08 09:16
Titel: Combobox - Text und Value wie bei HTML-Select?
Hi, gibt es bei einer Combobox eine Möglichkeit, ähnlich wie bei einer HTML-Select Box, einen Value mit anzugeben, den ich im Hintergrund auslesen kann?
Ich habe halt ein Formular, wo der User per Textfelder und Comboboxen eine Auswahl trifft, die dann ausgewertet wird und entsprechende Werte aus einer Datenbank ausgelesen und dargestellt werden. Bisher lasse ich im Hintergrund der Comboboxen einfach ein Array laufen, das die IDs zu den jeweiligen Comboboxen speichert, über die dann die Datenbank-Abfrage läuft.
Ich finde diese Lösung nicht wirklich gut. Es muss ja immer erst geschaut werden, wie groß die Arrays werden. Ich bin noch Anfänger in Sachen C#, Net, WinForms und überhaupt "gehobener" Programmierung - möchte aber gerne Sinnvolles dazulernen.
Danke für eure Hilfe,
Markus
JüTho - Fr 11.04.08 10:02
Direktes Auslesen aus der Datenbank ist nicht vorgesehen: ADO.NET arbeitet so, dass Verbindungen zu einer Datenbank immer nur
kurzfristig geöffnet werden, um Daten zu holen und zu speichern. Für die Arbeit in der GUI (also auch für den Zugriff über eine ComboBox) sind Datenkopien im Arbeitsspeicher - insb.
DataSet und
DataTable vorgesehen.
Aber selbstverständlich ist ein Weg vorgesehen, der Deinem Wunsch entspricht; das gilt vor allem für Nachschlagetabellen. Hole zuerst per Select-Befehl und DbDataAdapter eine Liste ID+Name in eine DataTable. Binde die
ComboBox an diese DataTable und verweise
DisplayMember und
ValueMember an die betreffenden Spalten.
Für Erläuterungen verweise ich auf die SDK-Doku sowie auf
OpenBook Visual C# Kap.26 [
http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_26_000.htm#Xxx999338].
Hinweis: Es ist nicht sinnvoll, auf diesem Weg alle zig-tausend Kunden bereitzustellen, weil die ComboBox dafür nicht anwenderfreundlich ist. So etwas macht man eher über Auswahlformulare o.ä. Aber für kleinere Datenmengen geht es.
Gruß Jürgen
Realnub - Fr 11.04.08 10:14
Danke für deine rasche Antwort, werde mich dann mal mit diesem Vorschlag auseinandersetzen.
*edit*
Es funktioniert wunderbar und ist bestimmt auch effektiver als über einen DataReader in einer While-Schleife
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!