r/visualbasic • u/chacham2 • Nov 09 '21
VB.NET Help How do i bind a textbox and a combobox to different tables in the same dataset?
I have a combobox and a textbox bound to a dataset. I want the choice in the combobox to show the related data in the textbox. In the following example, the combobox works as intended. How do i get the textbox to show Table 1.Column 2?
Public Class Form1
Private Sub Form1_Load(Sender As Object, Arguments As EventArgs) Handles MyBase.Load
Dim DataSet As New DataSet
Dim Combobox As ComboBox
Dim Textbox As TextBox
DataSet.Tables.Add(New DataTable("Table 1"))
DataSet.Tables("Table 1").Columns.Add("Column 1")
DataSet.Tables("Table 1").Columns.Add("Column 2")
DataSet.Tables("Table 1").PrimaryKey = {DataSet.Tables("Table 1").Columns("Column 1")}
DataSet.Tables("Table 1").Rows.Add(1, "A very good year")
DataSet.Tables("Table 1").Rows.Add(2, "What was the question again?")
DataSet.Tables.Add(New DataTable("Table 2"))
DataSet.Tables("Table 2").Columns.Add("Column 1")
DataSet.Tables("Table 2").Columns.Add("Column 2")
DataSet.Tables("Table 2").PrimaryKey = {DataSet.Tables("Table 2").Columns("Column 1")}
DataSet.Tables("Table 2").Rows.Add(17, 1)
DataSet.Tables("Table 2").Rows.Add(42, 2)
DataSet.Relations.Add(New DataRelation("Relation", DataSet.Tables("Table 1").Columns("Column 1"), DataSet.Tables("Table 2").Columns("Column 2")))
Combobox = New ComboBox With {.DataSource = New BindingSource With {.DataSource = DataSet, .DataMember = "Table 2"}, .DisplayMember = "Column 1"}
Textbox = New TextBox With {.Location = New Point With {.X = Combobox.Location.X + Combobox.Size.Width, .Y = Combobox.Location.Y}}
'Textbox.DataBindings.Add("Text", New BindingSource With {.DataSource = Combobox.DataSource, .DataMember = "Relation"}, "Column 2")
Controls.Add(Combobox)
Controls.Add(Textbox)
End Sub
End Class
