cxGrid控件过滤筛选后如何获更新筛选后的数据集

cxGrid控件过滤筛选后如何获更新筛选后的数据集

 (2015-06-19 12:12:08)
标签: 

delphi

 

cxgrid筛选数据集

 

cxgrid过滤

分类: Delphi

cxGrid控件功能非常强大,很多人在使用,受到广大程序员的青睐,然而有时因为其功能强大,很多东西让开发人员一时摸索不出来,比如它的筛选功能。筛选功能使用方便,灵活,但是它默认筛选过后数据集并没有更新。简单验证法,筛选之前数据是20条记录,筛选过滤后显示的是10条记录,筛选过后查询绑定的AdoQuery的RecordCount,你会发现该值还是20,AdoQuery没有更新。

那么如何让AdoQuery筛选过后更新到和当前显示数据一致呢?有两种方法:

例:控件cxGrid1的cxGridDBTableView1绑定Ado组件AdoQuery1。设置cxGridDBTableView1的OptionsCustomize中的ColumnFiltering属性为True,然后设置需要筛选列的Options中的Filtering属性为True,这样就可以通过该列实现刷选过滤功能。

1.在cxGridDBTableView1的DataControllerFilterBeforeChange事件中写代码

  AdoQuery1.Filtered := True;
         AdoQuery1.Filter := AFilterText;

2.直接设置cxGridDBTableView1的属性实现,这个属性一般比较难找到。

在cxGridDBTableView1属性栏找DataController ——>Filter——>AutoDataSetFilter设置为True即可。

通过以上方法可以通过过滤前后AdoQuery1的RecordCount来验证一下。

注:AdoQuery1如果是手动创建的,在该窗体的FormClose事件中把AdoQuery1的AdoQuery1属性再设置为原有状态,不然下次打开该窗口查询会报错。

原文地址:https://www.cnblogs.com/westsoft/p/8679726.html