Announcement

Collapse
No announcement yet.

ListBox an ComboBox binden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ListBox an ComboBox binden

    Hallo zusammen,
    ich habe eine Combobox die ich im DataSource mit einem Dataset.tables(„Mytable“) fülle.
    ( Dataset wird über einen Select aus einer SQL-Datenbank gefüllt – ID, Name, Abteilung ).

    In der Combobox lasse ich mir den Namen Anzeigen (DisplayMember) und ubergebe die ID dem ValueMember. Soweit ist noch alles OK.

    Nun möchte ich in eine Listbox über den Click der Combo Daten schreiben.
    Und zwar als DisplayMember die Abteilung ( aus dem Dataset ) und als ValueMember möchte ich zusätzlich noch die ID übergeben....

    Wie stelle ich das an....?

    Bin für jeden Tipp dankbar....

  • #2
    Ich hab`s hin bekommen....

    Aber ich musste es sehr kompliziert gestalten... Bin mir aber nicht sicher ob ich das so umständlich machen musste...? Es funktioniert aber...


    Und so hab ich`s gemacht:
    Ich habe eine Klasse geschrieben, in der ich die Daten komplett aus der Datenbank lese.

    Ich habe ein Array (als Objekt zur obigen Klasse ) erstellt, in das ich ID, Name und Abteilung geschrieben hab. ToString habe in dieser mit Name überschrieben.

    Code:
    Public Overrides Function ToString() As String
    Return Me.Name
    End Function
    Da, wenn ich ein Objekt an eine Combo binde ( über DataSource ), automatisch die ToString Eigenschaft als DisplayMember gesetzt wird habe ich also das Objekt an die Combo gebunden. ID als ValueMember.

    Habe mir ein zweites Array erstellt, ID und Abteilung, ToString wieder überschrieben. Dieses Mal mit Abteilung.

    Beim Klick der Combo fülle ich das zweite Array über SelectedValue ( erstes Array ) der Combo mit ID und Abteilung.

    Das zweite Array binde ich an die Listbox. DisplayMember ist wieder die ToString Eigenschaft des Arrays, also Abteilung, und ID ist ValueMember...

    So geht`s zwar kompliziert, aber es funktionoiert.....

    Falls jemand eine bessere, einfachere Lösung hat wäre ich für jede Anregung aufgeschlossen...

    Schon mal Danke....

    Comment


    • #3
      Hallo Markus,

      das ist in der Tat viel komplizierter, als es sein muss. Deine Klasse baut nur das "von Hand" nach, was ja bereits in der DataTable aus dem DataSet steht. Außerdem ist es doch viel besser, vorhandene Komponenten visuell über die Eigenschaften zu konfigurieren als eigenen Quelltext zu schreiben ;-)

      Mein Rezept besteht aus den folgenden Zutaten:
      - Combobox-Control
      - Listbox-Control
      - DataView-Komponente, die über die Eigenschaft Table an die DataTable-Instanz des DataSets gehängt wird.

      Immer dann, wenn in der ComboBox ein Eintrag ausgewählt wird, erhält die DataView-Komponente einen neuen Wert für die Eigenschaft RowFilter. Über die DataView-Komponete ist nur noch der Datensatz "sichtbar", der zum in der ComboBox ausgewählten Wert passt. Wenn die ListBox an das DataView gebunden ist, zeigt die Listbox somit immer nur den "richtigen" Datensatz an.

      Comment


      • #4
        Ich glaube ich habe mein Problem nicht ganz richtig beschrieben...

        Also. Wenn ich in der Combo einen Eintrag ändere möchte ich in der Listbox immer einen Eintrag hinzufügen. Der vorherige soll beibehalten werden.

        Im DataSet habe ich ID, Name und Abteilung.

        Als weiteres Probelm ist:
        1. In der Combo möchte ich Name anzeigen.
        2. In der Listbox möchte die Abteilung ( passend zum gewählten Eintrag Name ) hinzufügen.
        3. Für die weitere Verarbeitung benötige ich die ID der Eintäge, welche in der Combo vorhanden sind.

        Comment

        Working...
        X