DataBinding ComboBox

torkel

Mitglied
Hi

ich habe ein Problem mit Comboboxen.


Folgende Ausgangslage:

Ich habe eine WindwosForm mit TextBoxen und einer ComboBox. Im Hintergrund habe ich

zwei Tabellen. Artikelstamm und Beschreibung.

auf der WindwosForm habe ich eine TextBox1, wo ich eine indexNummer übergeben kann.

In der TextBox2 und TextBox3 werden mir dann die Artikelnummer und Artikelname vom

übergebenen Artikel angezeigt. z.b Wenn ich in der TextBox1 die zahl "3" übergebe,

bekomme ich in der TextBox2 die artiklenummer "333-333-33" und in TextBox3 den

Artiklenamen "artikel3".

Das ganze habe ich so gelöst:

Code:
DataRow[] dr = textilDatenbankDataSet.Tables["Artikelstamm"].Select("indexNummer = 
 
'" + textBox1.Text + "'");
 
textBox2.Text = (dr.Length > 0) ? dr[0]["artikelName"].ToString() : 
 
"nicht vorhanden";
 
textBox3.Text = (dr.Length > 0) ? dr[0]["artikelNummer"].ToString() : 
 
"nicht vorhanden";


Jetzt kommt aber das Problem mit der ComboBox1. In dieser ComboBox1 sollten mir alle

Einträge, die in der Tabelle Beschreibung sind, angezeigt werden. Dies konnte ich

auch noch lösen. Aber wie kann ich in der ComboBox1 die ja aus einer Auswahl von den

Einträgen der Tabelle "Beschreibung" besteht, den Wert, der zu dem übergebenen

Artikel(textBox1) past, als default setzen

Der Wert, der zusätzlich in der ComboBox1 angezeigt werden soll, liegt in der Tabelle Artikelstamm unter der Spalte "beschreibung". Dieser Wert soll dann in der Tabelle "Beschreibung" gesucht werden und in der ComboBox1 angezeigt werden. Zudem sollen aber auch alle anderen Einträge der Tabelle "Beschreibung" in der ComboBox1 auswählbar sein.

Bin um jede Hilfe Dankbar.

greetz

//edit:

für besseres Verständniss habe ich mal ein PrintScreen gemacht, wie das ungefähr aussehen sollte:

Die Beschreibung und Waschanleitung sollte so in der ComboBox dargestellt werden. Allerdings sollten die Werte nicht in eine TextBox geschrieben werden, sondern gleich in die ComboBox. Das heist, bei Beschreibung und Waschanleitung sollten die beiden ComboBoxen von unten sein.

Ich hoffe es kann mir so jemand weiterhelfen... ich hänge da schon 2 tage und komm net weiter.

danke für eure Hilfe


 

Anhänge

  • form.jpg
    form.jpg
    37,2 KB · Aufrufe: 469
Zuletzt bearbeitet:

Speedkill

Erfahrenes Mitglied
Ja wie jetzt willst du nun den Text aus den Textfeldern in die Comboboxen schieben oder den ausgewählten Text aus der Combobox in das Textfeld ?

Oder soll nur die Combobox von ner Tabelle gefüllt werden und der Eintrag ausgewählt werden welcher in dem Textfeld steht oder wie oder was ?

Also tut mir leid aber ich habe dein Problem nicht ganz verstanden?

Du hast ne gefüllte Combobox und nun soll ein Wert daraus angezeigt werden ?

this.cmbBox.SelectedIndex = this.cmbBox.Items.IndexOf("das gewünschte");

Vielleicht meintest du das ?

Grüße
Speedy
 

torkel

Mitglied
hi

also der text, der in der textbox waschanleitung steht ( 40° ) ist in der datenbak Artikelstamm. ich hab das nur in eine Textbox importiert um es zu testen.

die unterste combobox sollte alle Einträge der tabelle waschanleitung enthalten 30°,40°, 50°, etc. aber ausgewählt sollte der eintrag sein, der zu dem Artikel der oben ausgewählt ist, passt. In diesem fall 40°.

verstehst du mein Problem?

greetz
 

zioProduct

Erfahrenes Mitglied
Wo ist denn das Problem? Statt deinen Wert in eine Texbox zu schreiben, speichere Ihn in eine Variabel und gleiche anschliessend die Einträge deiner ComboBox mit deiner Variabel ab und falls Variabel == ComboBox1.item ist, musst du dieses Item nur noch anzeigen lassen?

Ansonste bin ich auch nicht drausgekommen :D

Mfg
ziop
 

Speedkill

Erfahrenes Mitglied
Also nun hab ich es auch kapiert.
Also fülle die Combobox wie bisher auch.
Dann mit :

this.cmbBox.SelectedIndex = this.cmbBox.Items.IndexOf("Hier kommt die Datenbankabfrage rein die Dir die Waschanleitung für den Artikel liefert also die '40' so wie Du auch die Textbox füllst welche 40 anzeigt.");

Du hast ja also schon praktisch alles zur Verfügung.

Grüße
Speedy
 

torkel

Mitglied
also ich mache das so:

Code:
comboBox2.DataSource = textilDatenbankDataSet.Waschanleitung;

comboBox2.DisplayMember = "beschreibung";

comboBox2.ValueMember = "id";

this.comboBox2.SelectedIndex = this.comboBox2.Items.IndexOf("40°");

das ganze ist einem button hinterlegt, wenn ich den button klicke, dann wird mir der eintrag, der in der combobox als default ist, rausgeschlöscht und ich sehe es nur noch, wenn ich aufs dropdown gehe.

was mache ich denn bloss nur falsch?

greetz
 

zioProduct

Erfahrenes Mitglied
Code:
this.comboBox2.SelectedIndex = this.comboBox2.Items.IndexOf("40°");

Das
this.comboBox2.Items.IndexOf("40°")

Ist nicht der Sinn, du willst doch nicht immer nach "40" suchen. Du musst hier nach der Id, deines Datensatzes suchen, welchen du oben Gebrauchst, du willst doch das er dir da den Richtigen Wert angiebt, und nicht immer 40
 

torkel

Mitglied
hi zioProduct

nei, habe das nur als Test reingeschrieben. Ich habe ja im Hintergrund die Tabelle Artikelstamm da sind die Informationen die in den TextBoxen abgespeichert (siehe PrintScreen). Die Auswahl der Combobox für die Waschanleitung kommt aus der Tabelle Waschanleitung. Diese Auswahl muss immer verfügbar sein. Jetzt wenn ich zb. oben die nummer 4 übergebe kommt mir ja der artikel in den textboxen und der wert, der in der textbox (waschanleitung) steht, soll in der combobox gesucht werden und auch angezeigt werden.

verstehst du, wie ich es meine? ich weiss, ich habe es jetzt gerade geschrieben, wie es funktionieren sollte, aber beim code komm ich net weiter.

grüsse

torkel
 

Speedkill

Erfahrenes Mitglied
this.comboBox2.SelectedIndex = this.comboBox2.Items.IndexOf(TextBoxWaschanleitung.text);

Wenn du nun noch TextBoxWaschanleitung mit dem String ersetzt der dir diese Textbox füllt, also sowas wie TextBoxWaschanleitung.text = "Das hier muss nun in obiges Statement";

So geht es dann auch ohne den Umweg über dir TextBox.

Grüße
Speedy
 

torkel

Mitglied
so habe ich es schon gemacht

Code:
 this.comboBox2.SelectedIndex = this.comboBox2.Items.IndexOf(TextBoxWaschanleitung.text);

aber wenn ich das mache und ausführe, dann wird mir der default wert in der combobox gelöscht, das heisst, es wird nichts mehr angezeigt, ich habe dann nur noch die auswahl der combobox zu verfügung.

also nehmen wir mal an, ich habe ein button, kliche auf den button und dann soll es mir in der combobox den richtigen wert setzten, was müsste dann da drinnen stehen?

nur das:

this.comboBox2.SelectedIndex = this.comboBox2.Items.IndexOf(TextBoxWaschanleitung.text);

grüsse

torkel