请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

shuzhan4120
初级会员   /  发表于:2021-10-18 14:03  /   查看:3534  /  回复:10
1金币
隐藏行操作和筛选功能都可以导致某些行被隐藏,那么该行不显示怎么判断是哪种操作导致的呢

最佳答案

查看完整内容

可以用下面的代码isRowFilteredOut传的是行索引 var rowfilter = sheet.rowFilter(); rowfilter.isRowFilteredOut(0); 如果是被筛选掉的,返回的是true,如果是隐藏或者没被筛选的返回的是false

10 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-10-18 14:03:01
来自 2#
可以用下面的代码isRowFilteredOut传的是行索引
var rowfilter = sheet.rowFilter();
rowfilter.isRowFilteredOut(0);

如果是被筛选掉的,返回的是true,如果是隐藏或者没被筛选的返回的是false

回复 使用道具 举报
shuzhan4120
初级会员   /  发表于:2021-10-18 14:46:25
3#
Derrick.Jiao 发表于 2021-10-18 14:39
可以用下面的代码isRowFilteredOut传的是行索引
var rowfilter = sheet.rowFilter();
rowfilter.isRowFil ...

但是这个怎么区分同时被筛选和隐藏的呢
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-10-18 15:20:31
4#
shuzhan4120 发表于 2021-10-18 14:46
但是这个怎么区分同时被筛选和隐藏的呢

你指的"同时"具体是什么意思呢?如果是筛选过后或者隐藏过后,可以用上面的代码判断指定的行是被隐藏还是筛选。

如果是在操作的过程中,可以事件实现。筛选会触发RangeFiltered事件,隐藏行会触发RowChanged
回复 使用道具 举报
shuzhan4120
初级会员   /  发表于:2021-10-18 16:51:21
5#
Derrick.Jiao 发表于 2021-10-18 15:20
你指的"同时"具体是什么意思呢?如果是筛选过后或者隐藏过后,可以用上面的代码判断指定的行是被隐藏还是 ...

先隐藏后筛选,然后刷新页面,所有通过事件监听是不行的
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-10-18 17:37:23
6#
shuzhan4120 发表于 2021-10-18 16:51
先隐藏后筛选,然后刷新页面,所有通过事件监听是不行的

如果是这种情况就用下面的代码遍历所有的行索引进行返回值结合getRowVisible判断是被筛选还是被隐藏。
var rowfilter = sheet.rowFilter();
rowfilter.isRowFilteredOut(0);
回复 使用道具 举报
shuzhan4120
初级会员   /  发表于:2021-10-18 19:13:43
7#
Derrick.Jiao 发表于 2021-10-18 17:37
如果是这种情况就用下面的代码遍历所有的行索引进行返回值结合getRowVisible判断是被筛选还是被隐藏。
v ...

但是isRowFilteredOut获取的是true说明被筛选的,这时候无论该行是否被隐藏getRowVisible返回的都是true,  所以判断不了是否该行是被筛选了,同时也被隐藏了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-10-19 10:23:55
8#
shuzhan4120 发表于 2021-10-18 19:13
但是isRowFilteredOut获取的是true说明被筛选的,这时候无论该行是否被隐藏getRowVisible返回的都是true, ...

做个简单的实验,添加5个数据
image.png263119506.png
我将第三行隐藏,上面两个接口返回的都是false

image.png375267943.png


此时我将隐藏的恢复,将第三行进行筛选,此时一个返回true一个返回false。这就能判断了。
image.png898667602.png

如果你仍未这个问题,请提供对应的demo,我直接给你写对应的逻辑,也建议你先试一下看下是什么结果。
回复 使用道具 举报
shuzhan4120
初级会员   /  发表于:2021-10-19 11:06:08
9#
Derrick.Jiao 发表于 2021-10-19 10:23
做个简单的实验,添加5个数据

我将第三行隐藏,上面两个接口返回的都是false

将第三行隐藏后返回的两个false,这时候我筛选,返回true和false,如果之前不隐藏第三行只筛选,返回的也是true和false (不管是否隐藏行,筛选完后getRowVisible都返回false, 从而不能判断在筛选状态下是否有隐藏行操作)
回复 使用道具 举报
shuzhan4120
初级会员   /  发表于:2021-10-19 11:36:42
10#
Derrick.Jiao 发表于 2021-10-19 11:34
请问为什么不能呢?

请问为什么不能呢?
function rowVisible(index){
    if(getRowVisible(index) 返回false){   //说明该行是被隐藏或者筛选
        if(isRowFilteredOut(index) 返回 true){            console("该行被筛选")  // ???此时能确定该行被筛选了, 但是能确定该行即被筛选也被隐藏了吗(这种情况就不能确定是否同时也被隐藏过)
        }
        if(isRowFilteredOut(index) 返回 fasle){  // 这种情况没问题
            console("该行被隐藏")
        }
    }
}
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部