找回密码
 立即注册

QQ登录

只需一步,快速开始

zhanglibin

初级会员

28

主题

91

帖子

257

积分

初级会员

积分
257
zhanglibin
初级会员   /  发表于:2021-9-1 20:12  /   查看:3348  /  回复:10
用rowFilter().openFilterDialog(filterInfo)可以打开筛选对话框;
那么请问如何关闭这个对话框;


现在遇到的问题就是:

如果当前表格已经用方法rowFilter().openFilterDialog(filterInfo)打开了一个对话框,且该对话框未关闭,此时再此执行该方法打开对话框就会出现位置错乱的问题,所以想到解决办法就是每次在打开之前先关闭;
image.png41692809.png

10 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-2 10:35:55
推荐
正常来说,openFilterDialog应该只执行一次,再次执行时会关闭筛选,就像附件的demo一样。
从行为上,多次调用open方法是一个不合理的行为,这会导致出现您上面描述的问题,目前没有接口进行关闭。因此您需要从代码层规避多次调用的问题。



inandout.html

2.75 KB, 下载次数: 68

回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2021-9-2 10:05:23
沙发
莫非需要判断当前对话框是否存在于页面中?
回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2021-9-2 11:19:12
地板
Derrick.Jiao 发表于 2021-9-2 10:35
正常来说,openFilterDialog应该只执行一次,再次执行时会关闭筛选,就像附件的demo一样。
从行为上,多次 ...

好的,那再麻烦您一下,问下这个筛选对话框的id是固定的吗?
回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2021-9-2 11:19:22
5#
本帖最后由 zhanglibin 于 2021-9-2 11:21 编辑

image.png260702513.png
gc-dialog3是筛选对话框固定id吗?
我还看到右键对话框的id是gc-dialog2,这个呢?也是固定的吗?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-2 13:51:21
6#
zhanglibin 发表于 2021-9-2 11:19
gc-dialog3是筛选对话框固定id吗?
我还看到右键对话框的id是gc-dialog2,这个呢?也是固定的吗?

前面的gc-dialog是固定的,但是后面数字是由内部逻辑判断生成的。 image.png413426207.png

回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2021-9-2 14:27:01
7#
Derrick.Jiao 发表于 2021-9-2 13:51
前面的gc-dialog是固定的,但是后面数字是由内部逻辑判断生成的。

那这几个dialog怎么区分呢?
鼠标右键对话框、筛选对话框
回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2021-9-2 14:28:33
8#
zhanglibin 发表于 2021-9-2 14:27
那这几个dialog怎么区分呢?
鼠标右键对话框、筛选对话框

或者有没有办法给他们加class/id
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-2 14:41:42
9#
zhanglibin 发表于 2021-9-2 14:28
或者有没有办法给他们加class/id

没有太好的方法可以区分,这个是调用内部的方法生成的id。回到这个问题,最根本就是需要从代码上避免多次调用open这个接口。
回复 使用道具 举报
zhanglibin
初级会员   /  发表于:2021-9-2 15:02:22
10#
Derrick.Jiao 发表于 2021-9-2 14:41
没有太好的方法可以区分,这个是调用内部的方法生成的id。回到这个问题,最根本就是需要从代码上避免多次 ...

正常情况下,包括您给的例子中,如果打开了一个筛选对话框,鼠标失去焦点,或者点击表格其他的地方,这个对话框自动就关闭了,我的项目中,现在问题就出现在它不回自动关闭;
所以才考虑怎么手动关闭它;
let filterDialogDom = $('[id^=gc-dialog].gc-filter-dialog-style');
filterDialogDom.remove()
sheet.rowFilter().openFilterDialog(filterInfo);
这样好像可行
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部