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()