龙空技术网

C#学习随笔—DataGridView数据筛选

NCG杰哥 889

前言:

现在大家对“windows筛选命令”大体比较关注,各位老铁们都需要了解一些“windows筛选命令”的相关资讯。那么小编同时在网摘上搜集了一些关于“windows筛选命令””的相关内容,希望各位老铁们能喜欢,咱们一起来了解一下吧!

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里面的数据传递给BindingSourcethis.Show_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'*筛选文本*'"

我下面给大家展示一下,我这边的效果图:

原始数据展示

Message 筛选cap的结果

希望对大家有所帮助!

标签: #windows筛选命令