找回密码
 立即注册

QQ登录

只需一步,快速开始

_yan

银牌会员

37

主题

3104

帖子

3471

积分

银牌会员

积分
3471
_yan
银牌会员   /  发表于:2021-9-8 11:14  /   查看:1535  /  回复:9
1. 筛选之前,如下图: image.png758844604.png


2. 筛选:
image.png820054931.png

3. 筛选之后:
image.png671742248.png

4. 点击排序,排序是自己将数据按当前列排序后,setDataSource放回表格的,这个时候展示就有问题了:
image.png486570434.png

这个想要在setDataSource之后,还显示之前筛选的结果。需要怎么处理一下?

9 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-8 15:31:19
推荐
_yan 发表于 2021-9-8 14:10
您好,我想在排序之后,再用之前的筛选条件筛选一下,但是这个筛选是用代码完成的。
排序是:我自己将表 ...

您可以参考附件的demo,获取筛选的条件。在进行排序的时候先获取前面筛选的条件,排序完成后,再将数据设置在表单上并根据前面获取的筛选条件应用在排序后的。另外,建议您使用我们原生的筛选按钮进行筛选,这样能避免一些难以定位的问题出现。

同步filter.html

2.11 KB, 下载次数: 31

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-8 12:17:31
沙发
如果是想显示筛选前的结果,您可以尝试用sheet.rowFilter().reset()清除筛选

另外,请问这个排序您是怎么做的呢?是您通过自己的逻辑实现的吗?您可以将排序好的数据通过控制台打印一下看下是否正确。

若仍未解决您的问题,请提供能复现问题的demo,这边测试一下。
回复 使用道具 举报
_yan
银牌会员   /  发表于:2021-9-8 14:10:45
板凳
本帖最后由 _yan 于 2021-9-8 14:13 编辑
Derrick.Jiao 发表于 2021-9-8 12:17
如果是想显示筛选前的结果,您可以尝试用sheet.rowFilter().reset()清除筛选

另外,请问这个排序您是怎 ...

您好,我想在排序之后,再用之前的筛选条件筛选一下,但是这个筛选是用代码完成的。
排序是:我自己将表格展示的数据排序的,排序后setDataSource放回表格展示。
例如:表格展示12345,筛选后是12,我将原数据排序后是54321,放回表格我想在表格展示的是21。
回复 使用道具 举报
_yan
银牌会员   /  发表于:2021-9-8 15:44:33
5#
本帖最后由 _yan 于 2021-9-8 15:48 编辑
Derrick.Jiao 发表于 2021-9-8 15:31
您可以参考附件的demo,获取筛选的条件。在进行排序的时候先获取前面筛选的条件,排序完成后,再将数据设 ...

image.png903259887.png


getFilterItems知道取的是哪一列的,getFilteredItems获取到的筛选条件,怎么对应到每一列中? image.png98794249.png

这个打印的是所有的筛选条件,用getFilteredItems获取到的。

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-8 16:36:39
6#
_yan 发表于 2021-9-8 15:44
getFilterItems知道取的是哪一列的,getFilteredItems获取到的筛选条件,怎么对应到每一列中?

...

getFilterItems已经是明确是需要传一个列索引进去的
var filterItems = sheet.rowFilter().getFilterItems(0);

这个传的列索引是几那么在addFilterItem也传的是几,例如,get的时候传的是0,add的时候自然也是对应的是0
  1. for(var i=0;i<filterItems.length;i++){
  2.                                         var filterItem = filterItems[i];
  3.                                         sheet.rowFilter().addFilterItem(0,filterItem);
  4.                                 }
  5.                                 sheet.rowFilter().filter(0);
复制代码


回复 使用道具 举报
_yan
银牌会员   /  发表于:2021-9-8 16:57:50
7#
Derrick.Jiao 发表于 2021-9-8 16:36
getFilterItems已经是明确是需要传一个列索引进去的
var filterItems = sheet.rowFilter().getFilterIte ...

image.png662769164.png
我如果想用后面这个方法,直接获取所有的筛选条件,然后一下全部设置进去。没有办法对应到每一列吗?

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-8 18:10:01
8#
_yan 发表于 2021-9-8 16:57
我如果想用后面这个方法,直接获取所有的筛选条件,然后一下全部设置进去。没有办法对应到每一列吗?
...

只能遍历所有需要的列或者所有列通过sheet.rowFilter().getFilterItems(i);获取,然后再进行遍历设置筛选结果。
回复 使用道具 举报
_yan
银牌会员   /  发表于:2021-9-8 21:36:15
9#
Derrick.Jiao 发表于 2021-9-8 18:10
只能遍历所有需要的列或者所有列通过sheet.rowFilter().getFilterItems(i);获取,然后再进行遍历设置筛选 ...

好的
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-9 09:23:20
10#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部