09.跨窗口联动,多条件搜索功能
课程内容
根据数据类型设置合适的输入域 条件自由组合 触发数据刷新的时机
课程目标
配置多个条件筛选数据,当用户没有输入某个条件时,该条件不起作用
课程概要
根据数据类型设置合适的输入域
根据数据类型的不同,一般会设置不同的表单输入域。
单选多选
在字段取值可以枚举的情况下,一般会选用单选或多选,这里所说的单选和多选不仅仅是单选、多选按钮,还包括下拉框、自动补全等同类型组件。 这类组件的优势是,一般情况下用户可以免键盘输入快速进行数据筛选,同时系统能得到更精准的输入,提高查询效率。 使用这类组件,需要配置可选项,比如可选用的班级:
SELECT id value, name displayName FROM class WHERE status = 1
文本输入
相对的,在取值不易被枚举时,我们就会选用文本输入框之类的组件了。 一般来说文本输入的数据会配置成前后模糊查询,此时相对于牺牲性能提高灵活度,在数据量巨大的情况下(表结构设计合理的情况下,数据量百万以上时),尤其需要慎用。 在Enhancer中,我们可以设置数据格式化来拼接%,进行模糊查询,不需要到SQL中处理。
条件自由组合
一般来说,我们会希望下拉列表没有选中、输入框没有输入的时候,不过滤这个条件,这个需求是可以通过SQL的技巧来实现的。
SELECT
id,
class_id,
class_name,
course_id,
course_name,
teacher_id,
teacher_name
FROM
class_course_teacher
WHERE
`status` = 1 AND
(@11-CLASS@ = '' OR class_id = @11-CLASS@) AND
(@11-COURSE@ = '' OR course_id = @11-COURSE@) AND
(@11-TEACHER@ = '' OR teacher_id = @11-TEACHER@)
触发数据刷新的时机
窗口联动,自然会分成主动和被动,窗口数据被动刷新,我们称之为受影响,Enhancer可以很方便的设置受影响的时机:
用户输入改变时
这种方式能简化用户的操作流程,选定或输入一个数据后,结果自动发生改变,这是自动受影响,Enhancer默认情况下是这种方式。
用户点击按钮时
有些用户可能更加习惯点击搜索按钮,再触发数据的刷新;或者系统的数据量是否庞大,频繁的自动刷新会给数据库带来不必要的压力。
这时我们可以取消列表窗口的自动受影响属性:
在搜索表单上配置一个按钮,并拉一根流程线到表单窗口,配置成点击按钮时影响。