ich stehe seit ein paar Tagen vor ein für mich unlösbares Problem. Habe schon mehrere Ansätze ausprobiert, komme aber einfach nicht weiter und ich hoffe sehr dass Sie mir einen guten Tipp geben können:
Hier der Code-Auszug der betroffen ist.
Ich habe eine Form die unter anderem folgende Objekte enthält: 1 Navigator, 1 BindingSource, 1 ComboBox 1 Textbox, … benutzer aber KEIN DATASET Objekt !! Sondern erzeuge Listen Objekte die dann eingebunden werden.
Hier einige der Schritte die bei der Initialisierung erfolgen:
this.FU = new FUsBindingList(dataLayer.GetFUbyPartner(123456)); // ist hier zum Testen erstmal fest…
this.bndSrcFUsBL.DataSource = this.FU;
this.bNavFU.BindingSource = bndSrcFUsBL;
this.Usr = new UsrBindingList(dataLayer.GetAllUsr());
this.cboUserKz.DisplayMember = „User_Surname“;
this.cboUserKz.ValueMember = „User_id“;
this.cboUserKz.DataSource = this.Usr;
this.cboUserKz.DataBindings.Add(new System.Windows.Forms.Binding(„Text“, this.bndSrcFUsBL, „FU_Mita“, true));
Die Reihenfolge der Definition habe ich aus dem Internet. Zuerst DisplayMember, dann ValueMember und dann erst DataSource (das ist bestimmt nichts neues für Sie).
Meine Form wird wie in dem ‚ObjectDataBinding‘ Beispiel aus dem Buch von F.Eller Visual C# 2005, d.H. mit einem nav Object und ein BindingSource Object:
this.dataLayer = new DataLayer();
this.FU = new FUsBindingList(dataLayer.GetFUbyPartner(216871)); // Nur zur Testzwecke, später wird es anders sein
this.bndSrcFUsBL.DataSource = this.FU;
this.bNavFU.BindingSource = bndSrcFUsBL;
Der ComboBox Object ist ebenfalls an dem BindinSource Object gebunden über das Feld FU_Mita.
Fall 1:
Wenn ich den DisplayMember der cbobox nicht definiere, dann klappt alles in der Form, nur das ich eben die ID’s zu sehen bekomme in der Liste, für die Benutzer aber die Namen ausgeben soll.
Fall 2:
Wenn DisplayMember wie oben mit User_Surname gefüllt wird, dann sehe ich erstmal in der Form dass die richtige ID in der Combobox zu sehen ist, aber in dem TextFeld daneben das erste Element der Liste angezeigt wird und nicht das aktuelle der Combobox.
Dann gehe ich in der Combobox und wähle ein anderes Element der Liste. Das geht und rechts in der Textbox kommt auch das eben ausgewählte Element rein. Nur, ich komme nicht mehr aus der Combobox raus, kann absolut nichts anderes mehr in der Form machen, ausser neue Elemente in der ComboBox auswählen.
Ich kann nur über eine Menu Form arbeiten und dann das projekt beenden.
Ich habe natürlich im Internet viel gesurft und habe verschiedene Ansätze ausprobiert.
Fall 3:
Z.B. in der zugrundeliegende classe, die Methode ToString() überladen:
public override string ToString()
{
return this.User_Surname + " / " + this.User_Name;
}
und dem DisplayMember mit „“ zugewiesen. Es soll dann der Inhalt von ToString defaultmässig zu sehen sein.
Dies klappt aber nur wenn man DisplayMember nach der definition von ValueMember macht (habe ich aus TryAndError Tests herausgefunden). Sonst wie Fall 1.
Ansonsten bekomme ich als erstes in der ComboBox die ID zu sehen, wenn ich aber über DropDown die Liste sehe, dann steht der Surname + Name nur der Effekt ist der gleicher wie bei Fall 2. Also auch nicht zu gebrauchen.
Ich wäre sehr sehr sehr dankbar wenn mir jemand weiterhelfen könnte.
Vielen Dank im Voraus.
Die DatenMaus.