AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C# "Master-Detail" Databinding von Listbox nach Textbox
Thema durchsuchen
Ansicht
Themen-Optionen

"Master-Detail" Databinding von Listbox nach Textbox

Ein Thema von Phoenix · begonnen am 31. Jan 2007 · letzter Beitrag vom 31. Jan 2007
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#1

"Master-Detail" Databinding von Listbox nach Textb

  Alt 31. Jan 2007, 17:06
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...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: "Master-Detail" Databinding von Listbox nach T

  Alt 31. Jan 2007, 18:35
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;
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#3

Re: "Master-Detail" Databinding von Listbox nach T

  Alt 31. Jan 2007, 20:17
Häh?

Also hier meine Liste und die Items:

Code:
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...
    }
Und hier nun auf meinem Form:

Code:
   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
Was klappt da ned?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: "Master-Detail" Databinding von Listbox nach T

  Alt 31. Jan 2007, 20:23
Zitat von Phoenix:
Was klappt da ned?
Um dir das Erfolgserlebnis nicht zu nehmen: schaue mal in meinen Schnipsel, da wo ich die Datenbindung der TextBox aufsetze.
Der erste Parameter ist die Property an die du den Wert binden willst.
Ich nehme mal an, deine TextBox hat keine Property "Content".
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#5

Re: "Master-Detail" Databinding von Listbox nach T

  Alt 31. Jan 2007, 20:27
Zitat von Elvis:
Der erste Parameter ist die Property an die du den Wert binden willst.
Ich nehme mal an, deine TextBox hat keine Property "Content".
Ab einer gewissen Uhrzeit ist es einfach nicht mehr gut, zu arbeiten .oO
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: "Master-Detail" Databinding von Listbox nach T

  Alt 31. Jan 2007, 20:55
Zitat von Phoenix:
Zitat von Elvis:
Der erste Parameter ist die Property an die du den Wert binden willst.
Ich nehme mal an, deine TextBox hat keine Property "Content".
Ab einer gewissen Uhrzeit ist es einfach nicht mehr gut, zu arbeiten .oO
Vor allem musst du das im VS2005 nicht mehr zu Fuss machen.
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.
Miniaturansicht angehängter Grafiken
data_sources_832.png  
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz