Using relations to databind two listboxes in a Windows Forms (Win Forms) application
I wanted to use databinding to link 2 list boxes together. I had two tables like this: ItemTypes| TypeID | TypeName |
| 1 | SomeType |
| 2 | Another Type |
| ItemID | TypeID | ItemName | SomeDetail | ItemCost |
| 1 | 2 | Some Product | yada | 1.22 |
| 2 | 2 | Similar Product | yada yada | 1.99 |
| 3 | 1 | Different Product | yada | 2.22 |
Let's assume these two tables are in your dataset. (dsItems) You need to make sure there is a relationship.
Dim colParent As DataColumn
Dim colChild As DataColumn
colParent = dsItems.Tables("ItemTypes").Columns("TypeID")
colChild = dsItems.Tables("Items").Columns("TypeID")
Dim relTypeItem As New DataRelation("ItemTypes_Items", colParent, colChild)
dsItems.Relations.Add(relTypeItem)
Then bind your first listbox like this:
Me.lbTypes.DisplayMember = "ItemTypes.TypeName"
Me.lbTypes.ValueMember = "ItemTypes.TypeID"
Me.lbTypes.DataSource = dsItems
And your second like this:
Me.lbItems.DisplayMember = "ItemTypes.ItemTypes_Items.ItemName"
Me.lbItems.ValueMember = "ItemTypes.ItemTypes_Items.ItemID"
Me.lbItems.DataSource = dsItems
Then you can even bind to some textboxes for the details, like this:
Me.tbSomeDetail.DataBindings.Clear() ' Make sure you don't have multiple relations, that will error.
Me.tbSomeDetail.DataBindings.Add(New Binding("Text", dsItems, "ItemTypes.ItemTypes_Items.SomeDetail"))
Me.tbItemCost.DataBindings.Clear()
Me.tbItemCost.DataBindings.Add(New Binding("Text", dsItems, "ItemTypes.ItemTypes_Items.ItemCost"))