找回密码
 立即注册

QQ登录

只需一步,快速开始

EX_040537700

注册会员

21

主题

63

帖子

182

积分

注册会员

积分
182

[已处理] 筛选浮层变动

EX_040537700
注册会员   /  发表于:2020-12-18 17:08  /   查看:4863  /  回复:14
我们这边有个需求,浮层下数据在筛选排序过程中数据的位置在变动,对应浮层也要跟着走,请问这个要怎么处理呢?(背景色有其他用处,这里只考虑浮层的情况下)

筛选排序浮层变动.zip

2.95 KB, 下载次数: 126

14 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-18 18:06:08
沙发
您好,浮动元素暂不支持您描述的需求,目前有且只有背景色能满足您的需求。
回复 使用道具 举报
EX_040537700
注册会员   /  发表于:2020-12-21 09:06:21
板凳
使用浮层是确定不可以实现是么?或者有其他方式可以实现么(不使用背景色)
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-21 10:34:36
地板
EX_040537700 发表于 2020-12-21 09:06
使用浮层是确定不可以实现是么?或者有其他方式可以实现么(不使用背景色)

您可以尝试用isRowFilteredOut遍历去判断这个行是否被筛选。

如果被筛选则用startRow、startColumn、endColumn、endRow调整该浮动元素的大小以及位置,具体如何调整可能需要您根据您的需求来考虑。
回复 使用道具 举报
EX_040537700
注册会员   /  发表于:2020-12-21 14:33:31
5#
不是太明白, 可以给个demo么
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-21 15:30:57
6#
EX_040537700 发表于 2020-12-21 14:33
不是太明白, 可以给个demo么

参考这个demo,利用RangeFiltered事件和遍历,判断哪些行没被筛选,拿到没被筛选的行索引再为其添加浮动元素即可。
  1. var myArray=new Array()
  2.     sheet.bind(GC.Spread.Sheets.Events.RangeFiltered, function (e, info) {

  3.         for(var i = 2;i < salesData.length + 1 ; i++){
  4.             console.log(i);
  5.             
  6.             console.log(filter.isRowFilteredOut(i))
  7.             if(filter.isRowFilteredOut(i)==false){
  8.                 myArray.push(i)
  9.             }
  10.            
  11.         }
  12.         console.log(myArray)
  13.         
  14.     });
复制代码



image.png51330565.png


fliter.zip

3.17 MB, 下载次数: 166

回复 使用道具 举报
EX_040537700
注册会员   /  发表于:2020-12-22 08:29:54
7#
你给的这个demo里面并没有解决我咨询的这个问题啊!可以麻烦你在demo理念实现以下么?我不太懂
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-22 10:17:25
8#
EX_040537700 发表于 2020-12-22 08:29
你给的这个demo里面并没有解决我咨询的这个问题啊!可以麻烦你在demo理念实现以下么?我不太懂

demo中已经教给您如何获取筛选后的行,拿到筛选后的行您就可以为根据您的需求去重新调整浮动元素的位置或者重新设置浮动元素。
  1. var myArray=new Array()
  2.     sheet.bind(GC.Spread.Sheets.Events.RangeFiltered, function (e, info) {

  3.         for(var i = 2;i < salesData.length + 1 ; i++){
  4.             console.log(i);
  5.             
  6.             console.log(filter.isRowFilteredOut(i))
  7.             if(filter.isRowFilteredOut(i)==false){
  8.                 myArray.push(i)
  9.             }
  10.            
  11.         }
  12.         console.log(myArray)
  13.         
  14.     });
复制代码


至于怎么调整浮动元素属于您的业务逻辑,这边主要是提供思路,具体实现需要您来完成。
回复 使用道具 举报
EX_040537700
注册会员   /  发表于:2020-12-22 11:47:02
9#
我这边尝试了一下并没有触发到我监听的筛选事件,请问这个事件怎么操作才会触发
微信图片_20201222114507.png
微信图片_20201222114358.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-22 12:00:31
10#
EX_040537700 发表于 2020-12-22 11:47
我这边尝试了一下并没有触发到我监听的筛选事件,请问这个事件怎么操作才会触发
  1. sheet.bind(GC.Spread.Sheets.Events.RangeFiltered, function (e, info) {

  2.         for(var i = 2;i < salesData.length + 1 ; i++){
  3.             console.log(i);
  4.             
  5.             console.log(filter.isRowFilteredOut(i))
  6.             if(filter.isRowFilteredOut(i)==false){
  7.                 myArray.push(i)
  8.             }
  9.            
  10.         }
  11.         console.log(myArray)
  12.         
  13.     });
复制代码


参考上面的代码监听,对应的事件应该是GC.Spread.Sheets.Events.RangeFiltered,而不是RangeFiltered,这是API
https://demo.grapecity.com.cn/sp ... event:RangeFiltered
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部