vb.net - 可以过滤多个网格视图的数据源吗?
问题描述
我有一个包含 4 个数据网格视图的程序,这些数据网格视图绑定到 1 个数据源。每个 gridview 代表 4 个位置中的 1 个。是否可以单独过滤网格视图上的数据,以便网格视图仅填充针对该网格视图特定位置的结果?我知道数据源的 .Filter 属性,但据我所知,它会在源级别过滤数据,这将限制各个位置的结果,最终只提供 1 个位置的结果,而不是全部 4 个。
解决方案
我将把建议的内容正式化一点。
当您使用复杂的数据绑定时,例如在设置DataSource
a时DataGridView
,您需要使用实现IList
接口的对象或实现接口的对象IListSource
。顾名思义, anIListSource
充当IList
.
该类DataTable
实现IListSource
接口。当您(或您的DataGridView
)调用它的GetList
方法时,它会返回其DefaultView
属性的值,即 a DataView
。它DataView
是实现的IList
。绑定的控件实际上显示了 that 的内容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
独立设置这四个属性。
推荐阅读
- c# - 错误 401 未经授权即使通过身份验证也无法访问我的主页
- java - JMeter 是否适用于 OpenJDK 13?
- sql - PostgreSQL json 提取
- html - 在 routerLinkActive="active" 上更改按钮内子垫图标的颜色
- mongodb - MongoDB聚合 - 将字符串数组减少为对象,键和值作为数组中字符串的出现次数
- c++ - 您可以在 C++ 的 for 循环中使用 2 种不同类型的变量吗?
- scala - 使用 Alpakka S3 连接器的多个下载请求
- css - 在css网格中同步切换列
- dart - Dart:实例无法访问静态字段?
- go - 停止阻塞的 goroutine