可以为多个gridview过滤数据源吗?

时间:2018-08-15 17:49:58

标签: vb.net datagridview

我有一个程序,该程序具有绑定到1个数据源的4个数据gridview。每个gridview代表4个位置中的1个。是否可以单独过滤gridview上的数据,以便只用针对该gridviews特定位置的结果填充gridview?我知道数据源的.Filter属性,但据我所知,它在源级别过滤数据,这将限制单个位置的结果,最终仅提供1个位置的结果,而不是全部4个。

1 个答案:

答案 0 :(得分:2)

我将把建议的内容正式化。

在使用复杂的数据绑定时,例如在设置DataSource的{​​{1}}时,您需要使用实现DataGridView接口的对象,否则需要使用实现IList界面。顾名思义,IListSource充当IListSource的来源。

IList类实现了DataTable接口。当您(或您的IListSource)调用其DataGridView方法时,它返回其GetList属性的值,即DefaultView。实现DataView的是DataView。绑定控件实际上显示了IList的内容,这就是您能够对网格中的数据进行排序的方式。排序的是DataView,而不是DataView。同样,您可以设置DataTable中的RowFilter来过滤数据。

如果您想以多种方式对相同的数据进行排序和/或过滤,则无需使用DataView,而是可以创建自己的DefaultView对象。如建议的那样,如果要以四种不同的方式过滤数据,则应显式创建四个不同的DataView,然后将它们绑定到网格:

DataViews

然后,您可以分别设置四个Dim dataView1 As New DataView(myDataTable) Dim dataView2 As New DataView(myDataTable) Dim dataView3 As New DataView(myDataTable) Dim dataView4 As New DataView(myDataTable) dataGridView1.DataSource = dataView1 dataGridView2.DataSource = dataView2 dataGridView3.DataSource = dataView3 dataGridView4.DataSource = dataView4 属性。