Entwickler-Ecke
Basistechnologien - Problem mit Relations für Steuerelemente
dinazavric - Fr 29.04.11 09:47
Titel: Problem mit Relations für Steuerelemente
Hallo,
im folgenden Code wird eine Relation erstellt, die dann auf die ComboBoxes übertragen wird. So werden je nach dem ausgewählten Parameter die möglichen Werte dazu aufgelistet.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| dataSet2.Relations.Add("ParameterProperties", dataSet2.Tables["Parameters"].Columns["ParameterName"], dataSet2.Tables["ParameterValues"].Columns["ParameterName"]); P1_Name.DisplayMember = "Parameters.ParameterName"; P1_Name.ValueMember = "Parameters.ParameterName"; P1_Name.DataSource = this.dataSet2; P1_Value.DisplayMember = "Parameters.ParameterProperties.ValueDefinition"; P1_Value.ValueMember = "Parameters.ParameterProperties.ParameterName"; P1_Value.DataSource = this.dataSet2; |
was nun, wenn ich eine weitere ComboBox benötige um bspw. noch einen Parameter zu beschreiben? Ich habe es genau so erstellt:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| P2_Name.DisplayMember = "Parameters.ParameterName"; P2_Name.ValueMember = "Parameters.ParameterName"; P2_Name.DataSource = this.dataSet2; P2_Value.DisplayMember = "Parameters.ParameterProperties.ValueDefinition"; P2_Value.ValueMember = "Parameters.ParameterProperties.ParameterName"; P2_Value.DataSource = this.dataSet2; |
Das Problem, dass ich hier bekomme ist, dass wenn ich in der P2_Name-ComboBox einen anderen Parameter auswählen will, ändert sich der erste Parameter in P1_Name-ComboBox. Ich möchte aber die Möglichkeit haben sie unabhängig von einander zu bearbeiten um so zwei Parameter bspw. einem Protokoll zuzuweisen.
Wie geht das?
Th69 - Fr 29.04.11 14:47
Hallo,
da du jeweils die gleiche DataSource verwendest, synchronisierst du somit die beiden ComboBoxen (der eigentliche Sinn vom DataBinding ;-).
Es gibt noch die Klasse BindingSource, welche du dazwischen schalten könntest, d.h. jeweils:
C#-Quelltext
1: 2: 3: 4:
| BindingSource bs = new BindingSource(); bs.DataSource = dataset;
comboBox.DataSource = bs; |
Also für jedes Steuerelement eine eigene BindingSource (mittels new) erstellen.
P.S.
Und BITTE poste NICHT in verschiedenen Foren gleichzeitig dieselbe Frage, dies ist sehr unhöflich den möglichen Antwortgebern gegenüber.
Cross-Post:
http://www.mycsharp.de/wbb2/thread.php?threadid=95166
Erst wenn du einige Stunden keine Antwort erhalten hast, dann kannst du dich evtl. an ein anderes Forum wenden (und hier dann auf den Cross-Post hinweisen).
dinazavric - Fr 29.04.11 15:08
Th69 hat folgendes geschrieben : |
Und BITTE poste NICHT in verschiedenen Foren gleichzeitig dieselbe Frage, dies ist sehr unhöflich den möglichen Antwortgebern gegenüber.
|
OK, verstehe
dinazavric - Fr 29.04.11 15:25
| Zitat: |
da du jeweils die gleiche DataSource verwendest, synchronisierst du somit die beiden ComboBoxen (der eigentliche Sinn vom DataBinding ;-).
Also für jedes Steuerelement eine eigene BindingSource (mittels new) erstellen.
|
Vielen Dank, das hat funkzioniert. Kann man aber auch hier machen, dass wenn die ComboBoxes zum ersten mal erscheinen (beim Fensteröffnen), dass in denen entweder nicht steht, so dass der Benutzer erst selber die Auswahl treffen soll, oder ein bestimmter Wert, falls es vorher deniniert wurde (in dem Fall egal wie, bspw. in einer Tabelle vorgespeichert...)
IsNull - Fr 29.04.11 16:16
Die Properties von der ComboBox -> SelectedItem und SelectedIndex sollten reichen ;)
Bei solchen Fragen würde eine Google-Suche schneller Antworten liefern als in einem Forum auf eine Antwort zu warten ;)
dinazavric - Fr 29.04.11 16:19
IsNull hat folgendes geschrieben : |
Die Properties von der ComboBox -> SelectedItem und SelectedIndex sollten reichen ;)
Bei solchen Fragen würde eine Google-Suche schneller Antworten liefern als in einem Forum auf eine Antwort zu warten ;) |
Ja, hast Recht ;-) hab hier eigentlich die Frage automatisch reingeschrieben :-) Danke!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!