09.跨窗口联动,多条件搜索功能

课程内容

根据数据类型设置合适的输入域 条件自由组合 触发数据刷新的时机

课程目标

配置多个条件筛选数据,当用户没有输入某个条件时,该条件不起作用

课程概要

根据数据类型设置合适的输入域

根据数据类型的不同,一般会设置不同的表单输入域。

  1. 单选多选

    在字段取值可以枚举的情况下,一般会选用单选或多选,这里所说的单选和多选不仅仅是单选、多选按钮,还包括下拉框、自动补全等同类型组件。 这类组件的优势是,一般情况下用户可以免键盘输入快速进行数据筛选,同时系统能得到更精准的输入,提高查询效率。 使用这类组件,需要配置可选项,比如可选用的班级:

    SELECT
     id value,
     name displayName
    FROM
     class
    WHERE
     status = 1
    
  2. 文本输入

    相对的,在取值不易被枚举时,我们就会选用文本输入框之类的组件了。 一般来说文本输入的数据会配置成前后模糊查询,此时相对于牺牲性能提高灵活度,在数据量巨大的情况下(表结构设计合理的情况下,数据量百万以上时),尤其需要慎用。 在Enhancer中,我们可以设置数据格式化来拼接%,进行模糊查询,不需要到SQL中处理。

like

条件自由组合

一般来说,我们会希望下拉列表没有选中、输入框没有输入的时候,不过滤这个条件,这个需求是可以通过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可以很方便的设置受影响的时机:

  1. 用户输入改变时

    这种方式能简化用户的操作流程,选定或输入一个数据后,结果自动发生改变,这是自动受影响,Enhancer默认情况下是这种方式。

  2. 用户点击按钮时

    有些用户可能更加习惯点击搜索按钮,再触发数据的刷新;或者系统的数据量是否庞大,频繁的自动刷新会给数据库带来不必要的压力。

auto_affected

这时我们可以取消列表窗口的自动受影响属性:

flow

在搜索表单上配置一个按钮,并拉一根流程线到表单窗口,配置成点击按钮时影响。

results matching ""

    No results matching ""