Autor Beitrag
Realnub
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

Win XP
VS 2005
BeitragVerfasst: Fr 11.04.08 09:16 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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.

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

Win XP
VS 2005
BeitragVerfasst: 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