找回密码
 立即注册

QQ登录

只需一步,快速开始

Yu-Xian

注册会员

9

主题

46

帖子

187

积分

注册会员

积分
187
Yu-Xian
注册会员   /  发表于:2024-7-12 09:03  /   查看:471  /  回复:6
老师您好:
      Excel上有个筛选的功能,可以在表头产生筛选下拉框。

         image.png13655699.png

        我们操作情境是后端查询出数据明细后,
       将资料明细塞进模板上(如上图)
       Excel上如果下面列有值的话,下拉框会自动产生选单值
       例如我输入测试 测试二后,选单就会出现值

         image.png68491209.png

        现在的情况是我将数据明细依序填入模板后,
       下方各列已有值,但是选单框仍是空白(如下图)


          image.png722952270.png

          必须在画面上任一个字段更改后,下拉框才会带出值来

          image.png703767394.png

          再麻烦老师协助是否需要指定什么参数或者要如何才能
         让下拉选单能自动根据现有的资料产生选单值


           谢谢


6 个回复

倒序浏览
eat_grape_5
中级会员   /  发表于:2024-7-12 11:51:09
沙发
根据楼主所述场景,我写的demo运行效果如下动图所示,导入模板填入数据后筛选下拉框中既有数据:

导入筛选模板.gif
附件为demo,供参考!

FilterTemplate.zip

2.1 KB, 下载次数: 55

回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2024-7-12 14:26:09
板凳
您好:
谢谢您拨空回复
有开启您的范本参考,
请问您会进行筛选区域的设定吗?
查看程序有一段setFilter的逻辑,但是未被呼叫。
image.png319193724.png
以我们的操作方式说明,
1.     用户会制作模板(不只一个工作表)并储存至系统。
2.     用户查询时我们会先开启储存的模版,并查询各工作表明细,
用setValue方式将值塞入各字段中。
3.     按照上述说明,用户模板的筛选区域不是固定的,
而且每个工作表不一定都有筛选区域。
所以能否再跟您请教下,是否需指定筛选区域的范围
谢谢

回复 使用道具 举报
eat_grape_5
中级会员   /  发表于:2024-7-12 14:52:57
地板
Yu-Xian 发表于 2024-7-12 14:26
您好:谢谢您拨空回复 有开启您的范本参考,请问您会进行筛选区域的设定吗?查看程序有一段setFilter的逻辑 ...

抱歉,这段代码可以忽略和删除,原本用以模拟构建筛选器的代码,后来用了设置了筛选器的模板文件。楼主可以看到浏览器页面上有上传文件的控件,这个控件用以模拟传入制作好的模板至程序中,即模拟您所说的“用户会制作模板并存储至系统”。楼上动图中的筛选器是在传入的模板中原本设计好的,并非由这段代码生成。
我制作模板时,设置了筛选区域,筛选区域比在代码中设置的数据区域小。导入模板后,发现筛选器的筛选区域会扩展至已填充的数据区域。所以,我觉得在模板中设置筛选区域与否都可以,但建议设置,以防以后版本升级过程中有所改动。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-7-12 19:12:37
5#
您好,您提到了模板和设置数据源,我在新版本中进行了下面的测试:
1、导入附件中的sjs文件。发现此时已经设置了筛选。
2、输入一些数据,发现此时点击筛选按钮,有数据生成,
过程如下:
筛选.gif


person7.sjs

3.74 KB, 下载次数: 55

回复 使用道具 举报
Yu-Xian
注册会员   /  发表于:2024-8-5 11:49:45
6#
感谢老师们的回复
后来我是加上筛选器的范围后,

image.png372760314.png

查询后的筛选器选单即可正常显示值。
不过这种作法就是无论使用者上传的模板
是否有使用筛选器,系统都会使用。
所以是否能请教老师,是否有判断该工作表
是否使用筛选器的api呢?
谢谢

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-6 16:04:13
7#
您好,根据上下文,理解您的问题在重新设置筛选范围后得到解决,即添加了如下图中的代码,是吗?
image.png470134887.png
您当前的问题是:如何判断当前工作表存在筛选?

对于第一个问题,您可以试下不重设筛选范围,而是添加如下代码,看是否能解决您的问题:
  1. spread.options.allowAutoExtendFilterRange  = true
复制代码



对于第二个问题,如果判断当前工作表存在筛选?可以判断filter是否为空。
  1. var filter = sheet.rowFilter();
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部