对于我的生活,我无法在任何地方找到这个(除了使用tableAdapter排除的解决方案....
我有一个简单的设置。我有一个datagridview。我有一个tableadapter绑定到datagridview。这一切都非常有效,但却引入了整个表格。在tableadapter本身,我创建了一个名为" nonServers"它返回我想要的数据。
所以我的问题是,如何将tableadapter的QUERY的结果绑定到datagridview,而不是完整的结果?当我尝试添加查询时,它会在顶部添加一个按钮来触发查询(因为它意味着要做)。但这不是我想要的 - 我希望初始值只是查询的结果。
任何帮助表示赞赏,我认为它可能非常简单
答案 0 :(得分:0)
你有些误解。首先,您的网格未绑定到表适配器。适配器只是在数据库和应用程序之间来回移动数据的一种方法。数据存储在应用程序DataTable
中,DataSet
是SELECT *
的一部分。这就是你的网格所必然的。
每个表适配器的默认查询是WHERE
,没有Fill
子句,因此所有列和所有行都是如此。表适配器有两个方法 - GetData
和Fill
- 执行该查询。 DataTable
将填充现有DataSet
,这可能是GetData
的一部分,而DataTable
会创建并返回一个新的独立WHERE
。
当您添加带有FillBy
子句的新查询进行过滤时,系统会提示您命名将执行该查询的新方法。默认情况下,它们被命名为GetDataBy
和ParentId
,您应该为其添加有意义的后缀,例如如果您要按FillByParentId
列进行过滤,则可以将方法命名为GetDataByParentId
和FillWithNonServers
。我不确定您的查询究竟是什么样的,但您可能会使用GetDataWithNonSevers
和Fill
。
如果将表格从“数据源”窗口拖到表单上,那么默认会添加一堆控件和组件,它还会生成一些代码,包括调用相应的Load
方法表适配器到Fill
事件处理程序。在您的情况下,您只需将MainActivity
调用更改为对新方法的调用,然后它将调用您的自定义查询而不是默认查询。