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