Vb.net 如何为TableAdapter参数设置值 目标

Vb.net 如何为TableAdapter参数设置值 目标,vb.net,combobox,filter,dataset,tableadapter,Vb.net,Combobox,Filter,Dataset,Tableadapter,我希望能够有两个组合框,其中一个是第二个的父或所有者。这意味着每当我在第一个组合框中选择一个值时,第二个组合框将过滤其结果,以显示与第一个组合框相关的相应值 例如: 注意:此示例已通过编程方式完成。。。我想弄清楚如何使用VisualStudio的用户界面来实现这一点 现状 我有一个包含两个数据表的数据集,如下所示: 如您所见,我的BakerySubsectionStableApter中有一个名为@FK\u BakerySection的参数。我想把它链接到BakerySection的PK\u

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

例如:

注意:此示例已通过编程方式完成。。。我想弄清楚如何使用VisualStudio的用户界面来实现这一点


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

如您所见,我的
BakerySubsectionStableApter
中有一个名为@FK\u BakerySection的参数。我想把它链接到
BakerySection的
PK\u BakerySection属性


当前结果 以下是我目前的结果:

在my TableAdapter中使用以下查询:


所以。。。如何使用用户界面为参数设置值?

如果在两个表之间添加
DataRelation
,则很容易(IIRC您只需在数据集设计器中执行此操作)

然后,只需将第二个组合框的
显示成员设置为
ParentTable.NameOfRelation.nameoDisplay


下面是一个完整的小示例:



只需确保您的
BakerySubSections
已完全填充(不需要参数)。

@DominicKexel如果这是唯一的方法。。。是的,我想。除非我可以在面包店的子部分一次加载所有内容,然后过滤它。这样我就不需要再查询数据库了?@DominicKexel它只是几行而已。缓存子部分?我很感兴趣。。。你会怎么做?它会带来什么好处?@DominicKexel哦,天哪,好的。是的,我最终会有大约20行。嘿,不太多啊!酷。不错的gif顺便说一句!哈哈。非常好,谢谢。我现在明白了。
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()