Vb.net 数据源行筛选器行为

Vb.net 数据源行筛选器行为,vb.net,Vb.net,我有一个关于RowFilter的问题。这到底是怎么回事 根据我的理解,当datasource绑定到数据时,当我对该数据源中的字段使用RowFilter时,它应该只过滤数据源结果。例如,在DataGridView或ListBox或任何内容中 例如,如果我使用DataGridView并有一些复选框类型列,如果我选中一些行的复选框并执行RowFilter我的复选框将自动取消选中。为什么会有这样的行为?它不应该只是过滤而不是改变GUI中的某些东西吗 简单代码: myGrid.DataSource

我有一个关于
RowFilter
的问题。这到底是怎么回事

根据我的理解,当
datasource
绑定到数据时,当我对该数据源中的字段使用
RowFilter
时,它应该只过滤数据源结果。例如,在
DataGridView
ListBox
或任何内容中

例如,如果我使用
DataGridView
并有一些
复选框
类型列,如果我选中一些行的复选框并执行
RowFilter
我的复选框将自动取消选中。为什么会有这样的行为?它不应该只是过滤而不是改变GUI中的某些东西吗

简单代码:

   myGrid.DataSource = _gridData.GetDataSet()

    myGrid.Tables(0).DefaultView.RowFilter = String.Format("[Nummer] like '" & txt1.Text.Trim() & "%'")  

myGrid.Tables(0).DefaultView.Sort = " DateRequested DESC "

是的,它应该只过滤数据的当前状态,但我怀疑您要返回数据库?显示筛选和绑定的相关代码。@Crowcoder代码显示。在这种情况下,这是否意味着数据源“未被触碰”——意味着RowFilter和Sort仅基于当前数据集进行筛选,而不是再次查询数据库以获取基于筛选的数据?我说得对吗?对我来说,它看起来像是
GetDataSet()
进行数据库调用。除非先保存更改,否则无论用户做了什么,本地数据都将被覆盖。如果没有看到更多的代码,我无法确定,但我认为您需要向
myGrid.Tables(0)
添加一个
DataColumn
,以便您的复选框值也被绑定。然后,在不调用
GetDataSet()
的情况下应用您的筛选器。下面是一个工作示例,它模拟了我认为您需要的内容:@Crowcoder此行:myGrid.DataSource=\u gridData.GetDataSet()在表单加载时只调用一次,然后在代码中休息。只有如图所示的筛选器。在GetDataser方法中,只有一个sql查询将结果传递给对象,即它。所以问题是,当它只执行一次,然后只使用过滤器时,这确实意味着过滤器只是处理当前数据集,而不是查询自身数据库-请在最后确认这一点。FilterRow是单独查询数据库还是只查询当前数据集而不进行其他查询?