![]() |
"Master-Detail" Databinding von Listbox nach Textb
Hi.
Wahrscheinlich ganz Simpel, aber ich häng grad total. Ich habe eine Listbox. An deren DataSource hängt eine Liste, der DisplayMember ist ein normales String-Property eines Items. Funktioniert einwandfrei. Nun hat dieses Item noch eine weitere normale String-Eigenschaft: "Content". Dieser Content soll in einer Textbox angezeigt werden, und zwar immer der passende zu dem Item, das in der Listbox selektiert ist. Was muss ich beim Databinding dieser Textbox eintragen, damit es immer die Content-Eigenschaft des in der Listbox selektierten Items anzeigt? Ich muss zugeben ich hab mich noch nicht so ganz doll mit dem Databinding auseinandergesetzt, brauch das jetzt aber spontan... |
Re: "Master-Detail" Databinding von Listbox nach T
Hier mal'n Bleistift:
Delphi-Quellcode:
uses
System.Collections.Generic, System.Windows.Forms; type SampleClass2 = class public property SomeValue : String; end; SampleClass1 = class public property SomeValue : String; property Content : SampleClass2 := new SampleClass2(SomeValue := 'noch nix drin'); readonly; end; class method ConsoleApp.Main; begin var myForm := new Form(); myForm.SuspendLayout(); var lb := new ListBox(); var tb := new TextBox(); tb.Dock := DockStyle.Top; lb.Dock := DockStyle.Fill; var list := new List<SampleClass1>(3); list.Add(new SampleClass1(SomeValue := 'A')); list.Add(new SampleClass1(SomeValue := 'B')); list.Add(new SampleClass1(SomeValue := 'C')); lb.DataSource := list; lb.DisplayMember := 'SomeValue'; tb.DataBindings.Add('Text', list, 'Content.SomeValue'); myForm.Controls.AddRange([lb, tb]); myForm.ResumeLayout(); Application.Run(myForm); end; |
Re: "Master-Detail" Databinding von Listbox nach T
Häh?
Also hier meine Liste und die Items:
Code:
Und hier nun auf meinem Form:
public class LabelField : MyBaseItem<LabelFieldList, LabelField>
{ String _guid = ""; String _matno = ""; String _name = ""; String _content = ""; // die anderen props halt ... public String Content { get { return _content; } set { _content = value; DoModified("Content"); } } } public class LabelFieldList : MyBaseList<LabelField, LabelFieldList> // MyBaseList ist eine BindingList { // Klassen code halt wie initialisierung etc... }
Code:
Was klappt da ned?
LabelFieldList fields = new LabelFieldList();
fields.Init(); // daten holen, hier werden die Items von der DB geladen // Liste binden: lstFields.DataMember = "Name"; lstFields.DataSource = fields; // taugt, die Liste zeigt alle Items an // und nun die Textbox an den Content-String des in der Listbox selektieren Items binden: txtFieldContent.DataBindings.Add("Content", Fields, "Content"); // taugt nicht |
Re: "Master-Detail" Databinding von Listbox nach T
Zitat:
Der erste Parameter ist die Property an die du den Wert binden willst. Ich nehme mal an, deine TextBox hat keine Property "Content". ;) |
Re: "Master-Detail" Databinding von Listbox nach T
Zitat:
|
Re: "Master-Detail" Databinding von Listbox nach T
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Gehe mal im Menü auf Data\Show data sources. Klicke auf "add blabla", wähle deine Klasse aus und ziehe den neuen Knoten in den data sources auf deine ListBox. Du kannst jetzt als DisplayMember "Name" auswählen. Jetzt läst du dir in den data sources die Eigenschaften deiner Klasse anzeigen und du kannst nun "Content" auf die TextBox ziehen. Damit du verstehst was ich meine, siehe screenie. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz