如何设置TableAdapter参数的值

时间:2014-04-30 14:19:48

标签: vb.net combobox filter dataset tableadapter

目标

我希望能够拥有两个ComboBox,其中一个是第二个的父级或所有者。这意味着每当我在第一个ComboBox中选择一个值时,第二个ComboBox将过滤它的结果,以显示与第一个ComboBox相关的相应值。

例如:

ComoBox Filtering Example

注意:此示例已经以编程方式完成...我想弄清楚如何使用Visual Studio的用户界面


现状

我有一个包含两个DataTables的数据集,如下所示:

DataSet

如您所见,我的BakerySubSectionsTableAdapter中有一个名为 @FK_BakerySection 的参数。我想将其与BakerySection's PK_BakerySection 属性相关联。


当前结果

这是我目前的结果:

Current Result

在TableAdapter中使用以下查询:

Query Builder

那么......我们如何使用用户界面为参数设置值?

1 个答案:

答案 0 :(得分:3)

如果在两个表之间添加DataRelation(IIRC,您可以在DataSet设计器中执行此操作),这很容易。

然后,您只需将第二个DisplayMember的{​​{1}}设置为ComboBox


这是一个小而完整的例子:

enter image description here


ParentTable.NameOfRelation.NameToDisplay

只需确保Dim data = New DataSet() Dim section = data.Tables.Add("Section") section.Columns.Add("ID", GetType(Integer)) section.Columns.Add("Name", GetType(String)) Dim sub_section = data.Tables.Add("SubSection") sub_section.Columns.Add("ID", GetType(Integer)) sub_section.Columns.Add("Name", GetType(String)) sub_section.Columns.Add("Section", GetType(Integer)) section.Rows.Add(New Object() {1, "Foo"}) section.Rows.Add(New Object() {2, "Bar"}) sub_section.Rows.Add(New Object() {1, "Sub Foo", 1}) sub_section.Rows.Add(New Object() {2, "Another Sub Foo", 1}) sub_section.Rows.Add(New Object() {3, "Sub Bar", 2}) sub_section.Rows.Add(New Object() {4, "bar bar bar", 2}) sub_section.Rows.Add(New Object() {5, "more bar", 2}) section.ChildRelations.Add("SectionToSub", section.Columns("ID"), sub_section.Columns("Section")) Dim f = New Form() Dim c1 = New ComboBox() With { _ .DataSource = data, _ .DisplayMember = "Section.Name", _ .ValueMember = "Id" _ } Dim c2 = New ComboBox() With { _ .DataSource = data, _ .DisplayMember = "Section.SectionToSub.Name", _ .ValueMember = "Id" _ } Dim fl = New FlowLayoutPanel() fl.Controls.Add(c1) fl.Controls.Add(c2) f.Controls.Add(fl) f.ShowDialog() 完全填充(不需要参数)。