一看就会,超有用活字格技能:一百七十二、表格组合框做选择筛选
本帖最后由 Grayson.Shang 于 2023-5-25 18:19 编辑若是在9.0中请忽略该帖子
:g54da:
明天就是除夕,我就在这写一个帖子,作为祝贺大家新年快乐的小小礼物。
今天要讲的功能很简单,但是却很实用。
先来说一下使用场景。我们有些需求需要在表格中填写表数据,其中有些字段的数据,填写并不是有用户自由填写的,而是使用组合框来选择,这些值来源于我们特定的字典表。但是有时我们会遇到一个这样的需求,我们希望在填报数据的时候,若是前面的组合框已经选过某些值之后,后面的组合框就不能再选择了。如下,一个行选了香蕉,我希望下面再选择的时候就不要出现香蕉了。
功能确实需要,那么这种我们应该怎么实现?
对于已经用熟活字格的大佬,应该很快就可以想到,组合框本身就自带查询条件,表格中的组合框同样适用,且这个查询条件本身还可以取到页面上的值,那么这不就简单了,那我们先试着做一下
1. 在表格外的一个单元格做一个,TEXTJOIN公式,目的是用来拼接表格组合框位置,已选择的值,设置如下
效果图如下
2. 我们在组合框中设置查询条件,使得当选择之后的值,不会出现在我们的后面的组合框中
我们先来看一看有没有达成想要的效果
很显然,按照上面的方法并没有达成我们的需求,现在我们选择都选不到,这是什么原因呢?
其实,这个是组合框本身的策略问题(虽然我也感觉这个策略并不好用,不过听过会在9.0的版本中增加空值全选的功能;P),咱们表格的查询条件,若是后面的为空,默认是全部查询的,但组合框是默认不查询的,无论中间选择的操作是什么。
既然知道了问题所在,那么解决方案是不是也有了,这里不能加入一个查询条件,比如加入一个下面的条件,这种也同样是不会生效的,因为下面的条件仍然不会让查询到数据(现在感觉为空不能全部查询真不好用)
3. 所以需要在页面上的TEXTJOIN增加这样一个条件,即拼接一个0,这样查询就没有问题
我们来看一下效果
但是还没完,上面的功能虽然已经完成了,但是若是在页面调用服务端命令,会出现这种情况
看上面的信息,很容易理解,数据校验不通过,在解决这个问题之前,先来了解一下这个校验是怎么回事。下面从三点来了解
1. 数据校验是在哪一步开启的?这个很多人会觉得,我并没有开启数据校验呀,为什么会有数据校验
答:在表格设置开启松绑定的时候开启的数据校验
2. 数据校验是在校验什么?(我感觉我输入的很合理呀,为什么数据校验没有通过)
答:主要原因有两个,一个是组合框设置了只能选择输入,另一个是查询条件把选过的值会过滤掉,所以校验的时候,选择的值已经不在组合框查询出结果的列表中了,这也是我们前面看到的哪个现象
3. 我们是在哪一步进行数据校验?既然数据校验不通过,为什么不是在我填的时候就报错,而是在我做其他操作的时候呢?
答:因为在表格中,我们开启了松绑定,所以不会校验,和松绑定的时机有关,但是组合框刚开始选值的时候,数据校验本身是通过的,所以也没有问题,那是在哪一步,答案是调用服务端命令的时候
那么以上三个问题回答完了,那么解决办法也就有了
1. 关闭服务端命令的数据校验
不推荐,因为页面上其他地方需要校验,而且要是服务端命令多的时候,也不合适。
2. 绕过数据校验
这个方法虽然不是那么的完美,但是很方便,也很简单,即使把表格放在一个标签页的容器中,在校验的时候,因为标签页使用Iframe框架,所以不会校验,不过这种方法,想要表格其他字段校验的时候就用不了了
3. 让数据校验本身合法
这个方法很好用,比较推荐,原理也比较简单,即使让数据校验通过。步骤如下
步骤1. 在表格中增加一列,让这一列的值等于组合框的值
步骤2. 在组合框的查询条件中,增加一个条件,其中后面值的单元格就是前面新增的列
大功告成,再次祝大家新年快乐!!!
页:
[1]