Mehrere Comboboxen an DataTable binden

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Mehrere Comboboxen an DataTable binden

    Hi

    ich habe mehrere ComboBoxen an ei DataTable Objekt gebunden. Leider werden bei einer Änderung der Auswahl in einer Combobox alle anderen gleich mit geändert. Wie kann ich das den so hinkriegen, dass ich jede ComboBox einzeln ändern kann?

    Danke

    VB.NET-Quellcode

    1. sqlString.CommandText = "SELECT * FROM " & "Personal"
    2. da.SelectCommand = sqlStringda.Fill(ds, "Personal")
    3. ComboBox1.DataSource = ds.Tables("Personal")
    4. ComboBox1.DisplayMember = "Firstname"
    5. ComboBox1.ValueMember = "PersonalID"
    6. ComboBox2.DataSource = ds.Tables("Personal")
    7. ComboBox2.DisplayMember = "Firstname"
    8. ComboBox2.ValueMember = "PersonalID"
    Die ComboBoxen sollen Namen von Arbeitern enthalten. Da am Anfang des Programms nicht festeht, wieviel und welche Arbeiter für eine Bestimmte Tätigkeit gebraucht werden, steht auch die Anzahl der ComboBoxen nicht fest.

    Das man BindingSources mit "New" erzeugt weiß ich schon. ;) Nur, wie mache ich das mit den unterschiedlichen Namen?

    Dim persBS_1 As New BindingSource()
    Dim persBS_2 As New BindingSource()
    ...
    Dim persBS_n As New BindingSource()

    So was in der Art wie:

    Dim "persBS_" & nr As New BindingSource() :whistling:

    geht ja nicht. Wie kann ich das denn hinkriegen? Oder kann mann sowas als Array erstellen? Muss ich gleich mal ausprobieren.

    EDIT:

    Also ich hab das mit dem BindingSource-Array getestet. Scheint zu funktionieren. Ist ja der Hammer!! Hier der Code:

    VB.NET-Quellcode

    1. Dim bs() As BindingSource
    2. ReDim Preserve bs(0)
    3. bs(0) = New BindingSource
    4. bs(0).DataSource = ds.Tables("Personal")
    5. ComboBox1.DataSource = bs(0)
    6. ComboBox1.DisplayMember = "Firstname"
    7. ComboBox1.ValueMember = "PersonalID"
    8. ReDim Preserve bs(1)
    9. bs(1) = New BindingSource
    10. bs(1).DataSource = ds.Tables("Personal")
    11. ComboBox2.DataSource = bs(1)
    12. ComboBox2.DisplayMember = "Firstname"
    13. ComboBox2.ValueMember = "PersonalID"


    Hoffentlich hat sich damit mein auch Problem gelöst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „gonzo16“ ()

    Ja, da braucht man ein Datenmodell mit einer 1:n-Relation. Und dann kann man eine DatagridViewComboboxColumn verwenden.

    Combos generieren braucht man nicht.

    Mir kommt vor, als hätte ich das neulich schon erzählt, dass ins "Minikass" auf DataExpressions eine vergleichbare Konstruktion enthalten sei.
    Hmm,

    hab mir deinen Artikel mit den DataExpressions mal durchgelesen. Klingt so, als könnte ich das wohl für mein Projekt gebrauchen. Würde wahrscheinlich auch besser aussehen als viele Comboboxen.
    Allerdings würde die Umstellung von Comboboxen auf ein DataGridView praktisch einer Neukodierung der ganzen Form gleichkommen - und davor graust es mir schon ein wenig (soo viel Code für die Tonne). Vor allem da ich in Sachen VB.NET echter Anfänger bin und mir die Dinge nicht so schnell von der Hand gehen wie bei euch Profis hier im Board. Na ja, mal sehn und ne Nacht drüber schlafen.