Combobox.ValueMember und Struct

raphk

Mitglied
Hallo

Also das Problem was ich habe ist hier schon ein par Mal angesprochen worden (hab gesucht) aber leider ist noch keine richtig Lösung für mich dabei.

Folgendes: Ich habe in meiner Datenbank eine Tabelle mit einem Foreign Key. Jetzt möchte ich, um diese Tabelle (die mit dem Foreign Key) zu füllen, will ich für das Foreign Key Feld eine Combobox benutzen. Diese gibt aus der zweiten Tabelle (auf die sich der Foreign Key bezieht) die Bezeichnung an. Soweit so gut.

Mein Problem ist jetzt nur das ich nicht mit der Bezeichung, sondern mit dem Kode (dem eigentlichen Foreign Key bzw Primary Key der zweiten Tabelle) arbeiten möchte. Mit einem Dataset würde es folgendermaßen aussehen:
Code:
comboBox2.DataSource = textilDatenbankDataSet.Waschanleitung;
comboBox2.DisplayMember = "beschreibung";
comboBox2.ValueMember = "id";

Ich habe aber kein Dataset zur Verfügung sondern eine Struct[] mit den jeweiligen Feldern. Das ganze ist so vorgegeben da es sich nicht um ein reines C# sondern um ein Corba Projekt handelt. Und die Funktion, die mir meine Tabelle ausliesst gibt halt diese Struct[] zurück.

Lange Rede kurzer Sinn: wie kann ich den Code oben mit meiner Struct[] verbinden oder aber wie bekomme ich die Struct[] in ein Dataset?

Danke im vorraus
 
Hi,

Hast du schon probiert, die Structs in die Items-Collection hinzuzufügen?
C#:
comboBox.Items.Add(myStruct);

Für DisplayMember und ValueMember musst du dann nur nach den Namen der Properties angegeben, die du dafür nutzen willst. (Wie in deinem Code)
 
Ja hatte ich. Problem daran ist, das es sich um eine Struct[] handelt, sprich mehrere Linien drin sind. Wenn ich die so zur Items Collection hinzu füge, schreibt der mit nur eine Linie mit Text "struct[] Array" in die Combobox. Mit der Methode AddRange bekomm ich einen Kompilationsfehler, das er die struct[] nicht zu nem object[] konvertieren könnte.
 
wegen dem Value Member. Das steht dann nach der Schleife automatisch bei allen Einträgen auf dem Wert vom letzten Datensatz. Keine Ahnung wieso.

Hab das Problem aber inzwischen anders gelöst. Mittels einer Hashtable umfahr ich das Combobox Problem. Und aus der Hashtable wähl ich dann am Ende einfach nur das Element "Combobox.SelectedItem" raus.

Code:
typmatch[] objTypMatch;
            objTypMatch = cClient.objTournois.getTypMatch();

            htTypeMatch = new Hashtable();
            cboTyp.Items.Clear();

            foreach (typmatch rowTypMatch in objTypMatch)
            {
               cboTyp.Items.Add(rowTypMatch.sLibelle);
               htTypeMatch.Add(rowTypMatch.sLibelle, rowTypMatch.sCod);
            }

Code:
String idTypMatch = (String)htTypeMatch [cboTyp.SelectedItem];

Ist zwar nicht so sauber wie ich ich es gerne mag, aber es funktionniert schonmal! ;)
 
Hallo!

Schau mal in diesen [thread=232634]Array "Sortieren" - Thread[/thread].
Dort findest eine Möglichkeit das Ganze sauber und OOP-gerecht abzufackeln...
 

Neue Beiträge

Zurück