Previous topicNext topic
Help > 使用指南 > 常用表功能 > 表扩展功能 > 筛选相关 >
前言

我们给表筛选做了很多扩展,方便利用不同特性,在不同场景下选用。当前我们先只谈谈在现有的标准编辑窗体模板中如何不碰任何代码相关的东西,直接通过相关属性设置来使用它们。

首先我们要明确一个概念,表的筛选分为本地筛选和后台筛选。本地筛选指的是针对已经加载到本地内存中的数据进行筛选;后台筛选指的是我们忽略当前已经加载到内存中的数据而直接到后台数据库中根据筛选条件重新加载符合条件的数据。

筛选树(GridTreeFilter)

类型:控件

筛选范围:本地筛选和后台筛选

触发加载或筛选条件:点击节点或选择节点。

特点:可以设置多个筛选组,并且以一个清晰的目录结构呈现,方便进行筛选。同时支持多选式的筛选。

高级筛选(AdvanceFilter)

类型:(有)控件

筛选范围:本地筛选和后台筛选

触发加载或筛选条件:点击节点或选择节点。

特点:可以通过简单的设置来实现非常复杂的查询。高级筛选只是一个统称,这里面有很多种筛选形式,具体的可以参考“高级筛选”章节。下图也只是高级筛选当中的一种。仅用作代表使用。

简单筛选(GridFilter)

类型:控件

筛选范围:本地筛选和后台筛选

触发加载或筛选条件:文本变更300毫秒后。如果我们不停地输入文本的话是不会触发加载或筛选的,只有停止输入超过300毫秒才会触发一次加载或筛选,这样可以有效地避免在后台筛选模式下频繁的访问数据库导致速度变慢,影响效率。

特点:简单筛选适合在一些表结构非常简单的表中使用。要查找的列就那么一两列。详细的介绍请参考“简单筛选”。

分页导航(GridNavigator)

类型:控件

筛选范围:后台筛选

触发加载或筛选条件:变更页码、变更每页记录数或点击导航按钮。

特点:这个只适合在一些数据量比较大的表中,对后台数据进行分页加载与导航。每页加载的数据也可以由用户临时更改。详细的介绍请参考“分页导航”。

行筛选(GridFilterRow)

类型:类

筛选范围:本地筛选和后台筛选

触发加载或筛选条件:按F5键或单击菜单“刷新”按钮。

特点:可以在行筛选中针对多列进行筛选条件的设置,这种方式占用空间相对较少。但是对使用者的要求更高。需要对行筛选的操作规范非常了解。详细的介绍请参考“行筛选”。

列筛选

类型:自带功能

筛选范围:本地筛选

触发加载或筛选条件:点击“应用”按钮。

特点:列筛选提供了类似Excel的列筛选功能。列筛选的特点是只针对当前表中已经加载进来的数据,筛选的效果只是把不符合条件的行隐藏。这个与其他的本地筛选稍微有一点不一样。如果只是使用角度来讲这个区别可以先忽视。具体哪里不一样,我们会在后续的开发篇讲述。详细的介绍请参考“列筛选”。

列选择

类型:模块

筛选范围:本地筛选和后台筛选

触发加载或筛选条件:点击“确定”按钮。

特点:表面上列选择跟上面的列筛选的其中一部分功能重合,但是它同时支持本地筛选与后台筛选,并且窗体更大,更方便操作一点。详细的介绍请参考“列选择”。

右键菜单筛选

类型:模块

筛选范围:本地筛选

触发加载或筛选条件:点击菜单命令或点击弹出窗口中的“确定”按钮。

特点:右键菜单筛选也与列筛选的一部分的功能重合,但是它可以方便地根据当前单元格的内容直接筛选。详细的介绍请参考“右键菜单筛选”。

表达式筛选

类型:模块

筛选范围:本地筛选

触发加载或筛选条件:点击“确定”按钮。

特点:适合筛选条件比较特殊、复杂,需要写函数表达式的场景,详细内容请参考“高级筛选”章节。

筛选控件

上面的一些筛选功能中包含一些控件,而这些控件也有一些共同点需要特别说一下。

共同特点

1、这几个扩展类都是起到筛选作用的。

2、都同时支持本地筛选与后台筛选。

3、前后台筛选都通过筛选树来设定。

4、控件都有一个相同的属性BaseSmGrid(ISmGrid接口类型)。我们在开发窗体功能时,这些控件使用起来也非常简单,只要在窗体中,将BaseSmGrid属性绑定到一个实现ISmGrid接口的表即可。行筛选不是控件,没有此属性。

5、可以单独使用也可以组合使用。组合使用时,它们的筛选条件是同时起效并相互影响的。

不同点

1、各自都有自己的特点与优势,适用的场景不同。

2、触发表重新加载或重新筛选的条件不同。