我有一个程序,它有 4 个数据网格视图,它们绑定到 1 个数据源。每个 gridview 代表 4 个位置之一。是否可以单独过滤 gridview 上的数据,以便 gridview 仅填充针对该 gridviews 特定位置的结果?我知道数据源的 .Filter 属性,但据我所知,它在源级别过滤数据,这会限制单个位置的结果,最终只提供 1 个位置的结果,而不是全部 4 个。
我会稍微正式化一下建议的内容。
当您使用复杂的数据绑定时,例如在设置DataSource
a 时DataGridView
,您需要使用实现IList
接口的对象或实现接口的对象IListSource
。顾名思义,anIListSource
充当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
然后您可以RowFilter
独立设置这四个属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句