找回密码
 立即注册

QQ登录

只需一步,快速开始

web_chuan
金牌服务用户   /  发表于:2023-2-17 13:15  /   查看:2538  /  回复:12
5金币
本帖最后由 Richard.Ma 于 2023-2-20 16:35 编辑

image.png508957824.png
就类似于单独保存 样式json, 我应该如何单独保存筛选与排序数据类型值,在如何设置到 表格中?

最佳答案

查看完整内容

您好,此问题和研发确认了一下。执行代码 filter.fromJSON(json) sheet.rowFilter(filter) 只是给这个sheet还原了原来的过滤器状态, 并不会改变过滤和排序结果,严格来说也不推荐这样使用,因为你新的这个sheet并不一定是原本的sheet,内容也可能不一样,这个时候如果去执行过滤和排序的话,可能就会出问题。 就你目前的应用场景,如果单独保存下来还是为了还原原本的sheet,那么可以再通过代码手动来做过滤和排序,调用上 ...

12 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-17 13:15:53
来自 9#
您好,此问题和研发确认了一下。执行代码
filter.fromJSON(json)
sheet.rowFilter(filter)
只是给这个sheet还原了原来的过滤器状态, 并不会改变过滤和排序结果,严格来说也不推荐这样使用,因为你新的这个sheet并不一定是原本的sheet,内容也可能不一样,这个时候如果去执行过滤和排序的话,可能就会出问题。

就你目前的应用场景,如果单独保存下来还是为了还原原本的sheet,那么可以再通过代码手动来做过滤和排序,调用上述代码还原了过滤器后,可以继续用下面的代码

使用filter方法执行过滤
  1. filter.filter()
复制代码


使用sortRange方法,用json中的排序信息来手动排序
  1. sheet.sortRange(json.range.row,json.range.col,json.range.rowCount,json.range.colCount, true, [
  2.                 json.sortInfo
  3.                 ], {groupSort: GC.Spread.Sheets.GroupSort.full, ignoreHidden: true});
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-17 18:21:24
2#
排序目前没有办法支持保存

过滤器可以toJSON和fromJSON

在sheet有过滤器的情况下
  1. var json=sheet.rowFilter().toJSON();
复制代码


还原
  1. var filter=new GC.Spread.Sheets.Filter.HideRowFilter()
  2. filter.fromJSON(json)
  3. sheet.rowFilter(filter)
复制代码
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-2-20 09:47:22
3#
那我排序应如何保存?
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-2-20 10:18:14
4#
web_chuan 发表于 2023-2-20 09:47
那我排序应如何保存?

image.png370524596.png

我隐藏第二行了之后 然后保存,刷新  只是回显了列头的筛选按钮, 并没有隐藏第二行 这是什么问题呢?
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-2-20 11:24:49
5#
本帖最后由 web_chuan 于 2023-2-20 14:25 编辑
web_chuan 发表于 2023-2-20 10:18
我隐藏第二行了之后 然后保存,刷新  只是回显了列头的筛选按钮, 并没有隐藏第二行 这是什么问题呢 ...

image.png826399535.png
image.png877367858.png
这是我得代码 可以参考下

可以加急吗
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-20 14:29:55
6#
1.排序现在有两种,1是你通过代码或是下图ribbon菜单中的排序按钮做了排序,这个没有记录,你可以通过RangeSorted事件来获取排序信息,自己保存
https://demo.grapecity.com.cn/sp ... l#event:RangeSorted
image.png260309752.png

2.通过下图过滤器中的排序按钮排序,这个是会记录在filter对象中,进行toJSON时也可以记录下来,同样你提到的隐藏项数组实际上也记录下来了,
理论上来说再去fromJSON的时候,排序和过滤结果都应该恢复,但是现在只恢复了一个过滤器下拉按钮和上面的排序箭头,实际并没有执行过滤和排序
这个问题会作为bug先报给研发,帖子暂时保留处理。后续进展会在帖子中更新

image.png325236205.png
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-2-20 14:56:59
7#
理论上来说再去fromJSON的时候,排序和过滤结果都应该恢复,但是现在只恢复了一个过滤器下拉按钮和上面的排序箭头,实际并没有执行过滤和排序
这个问题会作为bug先报给研发,帖子暂时保留处理。后续进展会在帖子中更新




这个您在本地也实验了吧,这个大概需要多长时间解决?


回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-20 16:37:30
8#
是的,已经在本地重现了问题。暂时没办法给你具体的修复时间,

后续有计划修复时间或者新的进展我会更新到帖子中
回复 使用道具 举报
web_chuan
金牌服务用户   /  发表于:2023-3-1 09:12:03
10#
Richard.Ma 发表于 2023-2-28 17:34
您好,此问题和研发确认了一下。执行代码
filter.fromJSON(json)
sheet.rowFilter(filter)

筛选的已经好了,不知道哪个排序应给如何获取 我看你这个好像是还原的方法
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部