标签:
delphicxgrid筛选数据集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属性再设置为原有状态,不然下次打开该窗口查询会报错。