Previous topicNext topic
Help > 使用指南 > 数据规范 > 09智能筛选 >
多级联动下拉列表

我们来做一个典型的地址输入功能。就是设置四个列,分别输入省、市、县市区、详细地址四个列。在此之前我们要先准备一下中国的行政区划基础数据。

数据结构如下:

导入数据如下:

我们需要在员工管理表中添加相应的数据规范。因为智能筛选规范会在每次打开下拉窗口的时候重新检查SQL语句中是否包含参数,如果包含参数的话,会重新根据参数加载数据清单,所以就比较适合做这种多级联动下拉列表的场景。

我们最后在指定列设置的数据规范如下:

我们再来看看具体的设置内容:

注意,这里我们引用了变量参数(详细教程请参考“数据规范说明”)。直接引用了省的数据。当然,这个示例里面我们还可以直接参数变量参数省略为“R("AddressProvince")}”,因为我们引用的是这个数据规范生效的当前表中的当前行。

这里的变量参数跟上面的类似。

下面我们来看看最后数据规范生效后的实际效果。(表属性设置完之后,窗体必须关闭重新打开后才会生效)

我们直接点击省的下拉按钮,直接显示了各省的清单,我们根据需要选择一个省名称。

然后我们再点击后面“市”列的下拉窗口时,展开的下拉清单是根据前面输入的省信息筛选后得到的。

后面的“县市区”列的下拉清单同样是筛选后的,这样我们就可以得到一个相对少的、明确的清单方便我们选择了。

同时请记住,智能筛选是支持输入筛选的,如果下拉清单仍然很多的话,我们可以通过输入部分文字来实现筛选过滤。还记得我们上面设置参数里面的“筛选条件”吗?它就是来控制我们输入筛选时的筛选逻辑的。

也正是因为智能筛选拥有筛选功能,所以,当前面的省数据改变之后,然后再点击后面的列,会导致原来输入里面的数据在新的清单中无法正确筛选到数据,就会像下面这样,返回一个空的下拉清单。这时候我们不要慌,只需要将之前输入的数据删除掉即可显示所有清单。

数据清除之后,该有的数据清单显示出来了,接下来我们再根据需要进行相应的数据选择。