【问题标题】:How do I use a visual dataset's additional query as the dataSource/dataMember of a bindingSource?如何将可视数据集的附加查询用作 bindingSource 的 dataSource/dataMember?
【发布时间】:2015-07-10 23:20:57
【问题描述】:

如何在可视数据集中使用附加查询 (FillByQuery) 作为 bindingSource 的 dataSource/dataMember?

【问题讨论】:

    标签: vb.net winforms strongly-typed-dataset


    【解决方案1】:

    所有附加查询都加载到数据集中完全相同的表中。每个查询可以返回大致相同的数据,但使用不同的表和参数。

    dim ta 作为新的 myTableAdapter 将 md 调暗为新的 myDataSet . . . 暗淡 bs 作为新的 BindingSource bs.Datamember="myTable" bs.DataSource=myDataSet

    ta.PrimaryQuery(md.myTable, parameter1, Parameter2)

    ta.AlternateQuery(md.myTable, parameter3)

    请注意,如果您在表单设计器中执行此操作,当您将数据源拖到表单上时,大部分操作都会为您处理。

    从两个查询中加载的所有记录都直接进入数据集中的表中。您不需要对额外的查询做任何特别的事情。

    【讨论】:

    • 使用表单设计器时,无法选择附加到数据集中表的查询之一以用于 bindingSource。
    【解决方案2】:

    我正在使用表单设计器。 我在表格上有一个区域用于添加新的“票证”记录。该区域有一个组合框,仅列出活动的“位置”,并有一个插入新记录的“添加”按钮。

    我有一个 dataGridView,它显示所有“票证”记录,并带有一个嵌入的“位置”组合框,以便用户可以在需要时编辑该值。此组合框使用与“添加新”“位置”组合框相同的 bindingSource。 bindingSource 使用的数据集有额外的查询来显示“位置”的完整列表或仅显示活动的“位置”。

    问题在于,如果 dataGridView 试图显示一个旧的“票证”记录,其中的“位置”处于非活动状态,则所需的记录不在“位置”数据集中并导致错误。因此,我打算将 dataGridView 的“位置”组合框绑定到“位置”记录的完整列表。所以接下来我认为这将允许用户编辑记录并在不知不觉中选择非活动的“位置”。最后我的解决方案是更改原始的“位置”数据集,让记录将“(非活动)”附加到他们的描述中,这样用户就会知道这个“位置”是非活动的。我从未实现过第二个 bindingSource。

    【讨论】:

    • 您也可以在绑定源中添加一个过滤器以“隐藏”非活动记录,但请检查原始表以确保没有重复。
    猜你喜欢
    • 1970-01-01
    • 2011-12-15
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多