我们来做一个典型的地址输入功能。就是设置四个列,分别输入省、市、县市区、详细地址四个列。在此之前我们要先准备一下中国的行政区划基础数据。
数据结构如下:
导入数据如下:
我们需要在员工管理表中添加相应的数据规范。因为智能筛选规范会在每次打开下拉窗口的时候重新检查SQL语句中是否包含参数,如果包含参数的话,会重新根据参数加载数据清单,所以就比较适合做这种多级联动下拉列表的场景。
我们最后在指定列设置的数据规范如下:
我们再来看看具体的设置内容:
注意,这里我们引用了变量参数(详细教程请参考“数据规范说明”)。直接引用了省的数据。当然,这个示例里面我们还可以直接参数变量参数省略为“R("AddressProvince")}”,因为我们引用的是这个数据规范生效的当前表中的当前行。
这里的变量参数跟上面的类似。
下面我们来看看最后数据规范生效后的实际效果。(表属性设置完之后,窗体必须关闭重新打开后才会生效)
我们直接点击省的下拉按钮,直接显示了各省的清单,我们根据需要选择一个省名称。
然后我们再点击后面“市”列的下拉窗口时,展开的下拉清单是根据前面输入的省信息筛选后得到的。
后面的“县市区”列的下拉清单同样是筛选后的,这样我们就可以得到一个相对少的、明确的清单方便我们选择了。
同时请记住,智能筛选是支持输入筛选的,如果下拉清单仍然很多的话,我们可以通过输入部分文字来实现筛选过滤。还记得我们上面设置参数里面的“筛选条件”吗?它就是来控制我们输入筛选时的筛选逻辑的。
也正是因为智能筛选拥有筛选功能,所以,当前面的省数据改变之后,然后再点击后面的列,会导致原来输入里面的数据在新的清单中无法正确筛选到数据,就会像下面这样,返回一个空的下拉清单。这时候我们不要慌,只需要将之前输入的数据删除掉即可显示所有清单。
数据清除之后,该有的数据清单显示出来了,接下来我们再根据需要进行相应的数据选择。