将参数化预定义查询添加到datagridview

时间:2017-10-15 11:58:54

标签: database vb.net visual-studio-2012

对于我的生活,我无法在任何地方找到这个(除了使用tableAdapter排除的解决方案....

我有一个简单的设置。我有一个datagridview。我有一个tableadapter绑定到datagridview。这一切都非常有效,但却引入了整个表格。在tableadapter本身,我创建了一个名为" nonServers"它返回我想要的数据。

所以我的问题是,如何将tableadapter的QUERY的结果绑定到datagridview,而不是完整的结果?当我尝试添加查询时,它会在顶部添加一个按钮来触发查询(因为它意味着要做)。但这不是我想要的 - 我希望初始值只是查询的结果。

任何帮助表示赞赏,我认为它可能非常简单

1 个答案:

答案 0 :(得分:0)

你有些误解。首先,您的网格未绑定到表适配器。适配器只是在数据库和应用程序之间来回移动数据的一种方法。数据存储在应用程序DataTable中,DataSetSELECT *的一部分。这就是你的网格所必然的。

每个表适配器的默认查询是WHERE,没有Fill子句,因此所有列和所有行都是如此。表适配器有两个方法 - GetDataFill - 执行该查询。 DataTable将填充现有DataSet,这可能是GetData的一部分,而DataTable会创建并返回一个新的独立WHERE

当您添加带有FillBy子句的新查询进行过滤时,系统会提示您命名将执行该查询的新方法。默认情况下,它们被命名为GetDataByParentId,您应该为其添加有意义的后缀,例如如果您要按FillByParentId列进行过滤,则可以将方法命名为GetDataByParentIdFillWithNonServers。我不确定您的查询究竟是什么样的,但您可能会使用GetDataWithNonSeversFill

如果将表格从“数据源”窗口拖到表单上,那么默认会添加一堆控件和组件,它还会生成一些代码,包括调用相应的Load方法表适配器到Fill事件处理程序。在您的情况下,您只需将MainActivity调用更改为对新方法的调用,然后它将调用您的自定义查询而不是默认查询。