Laden...

Combobox an Tabelle binden mit FK

Erstellt von diplomat vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.761 Views
D
diplomat Themenstarter:in
28 Beiträge seit 2006
vor 13 Jahren
Combobox an Tabelle binden mit FK

Hi, ich such schon ne Weile im Netz nach diesem "Standardfall" doch leider bin ich wohl als Silverlightanfänger noch etwas zu blind.

Ich möchte gerne eine Combobox mit Einträgen aus einer Tabelle befüllen

Tabelle 1:
Key_Person ->int
Name_Person-> text

Angezeigt werden soll immer der Name der Person.

Welche Person jedoch angezeit werden soll wird durch einen ForeignKey in einer Tabelle 2 bestimmt

Tabelle 2:
...
Key_Person-> int (FK to Tabelle 1.KeyPerson)

Kann mir da einer auf die Sprünge helfen? danke!

Grüße
Diplomat

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

am einfachsten ist wohl wenn du die die Daten in eine Datenstruktur mappst.
z.B. in eine ObservableCollection<Person> (Die Person-klasse musst du dann selbst erstellen).

Diese kannst du an die ComboBox binden und anzeigen.
Über das CurrentItem der ObservableCollection (oder das selecteditem von der ComboBox) kriegst du dann das aktuelle Item raus.

Das mit der zweiten Tabelle habe ich irgendwie nicht gecheckt. Was möchtest du damit machen?

Gruß
Michael

D
diplomat Themenstarter:in
28 Beiträge seit 2006
vor 13 Jahren

Ich meinte ich will das Tabelle eins angezeigt wird in der Combobox.

Sowas a la
Name_Person | Key_Person
Person A 1
Person B 2
Person C 3

Dabei entsprich A dem Key 1, usw.

Wenn nun jemand in der Combobox eine Person auswählt, möchte ich quasi den dazu passenden Key als Wert in der Tabelle zwei speichern, da die Combobox Teil eines DataForms ist.

Hoffe das ist nun klarer?

Gelöschter Account
vor 13 Jahren

Lös doch das ganze einfach mit einem Converter (IValueConverter) übder gib den FK und gib den Namen der Person zurück

Gruss
MusiuminCapitiss

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

jetzt hab ich es auch verstanden, danke 😃

Also du musst auf eine Änderung in der ComboBox reagieren und dann in deiner Tabelle den Wert reinschreiben.
Wenn du die ObservableCollection verwendest dann kannst du darüber mitbekommen wenn sich das CurrentItem ändert.

Hier mal ein Stück Beispielcode dazu


public class MainWindow
{
public MainWindow()
{
   Persons = new ObservableCollection<Person>();
   var a = CollectionViewSource.GetDefaultView(Person);
   a.CurrentItemChanged += (obj,e) =>
          {
               //Das Item hat sich geändert. Den Wert hinschreiben wo du willst
          }

   DataContext = this;
}


public ObservableCollection<Person> Persons{get;set;}
}


<ComboBox ItemsSource="{Binding Persons}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name_Person" />

Keine Garantie => da nur hier schnell runtergeklopft

Wenn du mit der Tabelle2 ein einfaches WPF Control meinst dann kannst du es auch direkt mit DataBinding machen. Also {Binding Persons.CurrentItem}

Gruß
Michael