C#学习随笔—DataGridView数据筛选
DataGridView作为⼀种常⽤的较⼤量数据显⽰的控件,实时显⽰是⼀⽅⾯要求,另⼀⽅⾯的需求就是可以对数据做前期的数据处理,就⽐如数据筛选。
DataGridView只是作为⼀个展⽰控件,通常数据会存储在DataTable,DataSet或者其他类似的数据结构体内,本⽂就以DataTable为例。
当然,筛选最为简单的⽅式就是Foreach或者For循环,对各条数据进⾏检查,然后重新绘制DataGridView⾥⾯的数据。这样的⽅式,数据处理速度会很慢。碰到⼏千条的数据量,筛选速度会相当感⼈。
还有另外⼀种⽅式,通过BindSource来实现数据筛选功能。
BindingSource组件提供多种⽤途。⾸先,通过在 Windows 窗体控件和数据源之间提供货币管理、更改通知和其他服务,简化了窗体上的控件与数据的绑定;然后,将控件绑定到 BindingSource 。与数据的所有进⼀步交互都是通过调⽤组件来完成的 BindingSource 。
上⾯是Microsoft官⽹的关于BindingSource的定义,可以看出BindingSource本⾝就是⽤来作为数据中转的,可以对数据做⼀下简单的预处理,⽽且不会改变数据源。那么如果利⽤BindingSource显⽰数据筛选
呢?
DataTable capture_data=new DataTable();
BindingSource capture_data_bs=new BindingSource();
//DataTable和BindingSource需要初始化为相同的列,这样才能绑定,本⽰例不详细列举
capture_data_bs.DataSource=capture_data;//将DataTable⾥⾯的数据传递给BindingSource
this_DataGridView.DataSource=capture_data_bs;//将BindingSource的数据传递给DataGridView
上⾯是将BindingSource绑定在DataTable和DataGridView之间,那么具体的筛选命令是怎么样的?
BindingSource有Filter属性,修改此属性值,即可显⽰筛选功能。如果要去除筛选,可以调⽤RemoveFilter()的⽅法即可。
Filter 属性允许您查看的⼦集 DataSource 。当Filter 不为 null ,会将 BindingSource 此属性传递到基础列表。如果在对象初始化过程中设置此属性,则在初始化完成后,调⽤将会延迟。若要形成筛选器值,请指定列的名称,后跟⼀个运算符和⼀个要筛选的值。接受的筛选器语法取决于基础数据源。如果
基础数据源是 DataSet 、或, DataTable DataView 则可以使⽤为属性记录的语法指定布尔表达式 DataColumn.Expression 。见下⾯⼀个简单的⽰例:
capture_data_bs.Filter="列名称='筛选⽂本' AND 列名称='筛选⽂本'";
从上⾯的⽰例,可以看出需要给Filter赋⼀个String类型的值,这个String值的格式为DataColumn.Expression,见链接:DataColumn.Expression 属性 (System.Data) | Microsoft Docs。基本的格式,就是列名称,然后跟上运算符号,如“=”,“<=”,“>=”等,最后单引号列出筛选值。
这⾥,我主要说⼀下,这个筛选是可以模糊筛选的,⽐如,要筛选包含某⼀段⽂本的所有数据,可以⽤如下⽰例:(需要⽤到*通配符以及LIKE运算符)
capture_data_bs.Filter="列名称 LIKE'*筛选⽂本*'"
我下⾯给⼤家展⽰⼀下,我这边的效果图:
datagridview数据源 希望对⼤家有所帮助!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论