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

QQ登录

只需一步,快速开始

IT-Weaver

初级会员

20

主题

76

帖子

238

积分

初级会员

积分
238
IT-Weaver
初级会员   /  发表于:2021-12-15 15:35  /   查看:5116  /  回复:11
本帖最后由 Clark.Pan 于 2022-3-30 14:13 编辑

原来V9版本,我们直接操作sheet下的deletedRows 属性,进行一些业务处理,请问现在V12版本中,我们如何找到这个记录删除记录的数组???

11 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-15 16:39:55
沙发
V12中仍可以通过getDeletedRows方法来获取删除的行记录
https://demo.grapecity.com.cn/sp ... s/edit/dirty-items#
回复 使用道具 举报
IT-Weaver
初级会员   /  发表于:2021-12-15 16:59:01
板凳
Clark.Pan 发表于 2021-12-15 16:39
V12中仍可以通过getDeletedRows方法来获取删除的行记录
https://demo.grapecity.com.cn/spreadjs/SpreadJS ...

获取的方法已经找到了,方法名是相同的。
但是我们原来的业务逻辑是:
1、当删除某行记录时,如果它是新增行操作,执行删除sheet.deleteRows和删除缓存区sheet.deletedRows.pop();操作。
2、当删除某行记录时,如果它是修改行操作,只执行删除sheet.deleteRows操作。


也就是说,我们是使用sheet.deletedRows作为记录我们准确删除行信息缓存的一个存储载体。




所以现在我们需要找到与V9版本对应的sheet.deletedRows的位置,或者比如提供一个类似sheet.setDeletedRows的函数,让我们可以直接操作到spreadjs的删除缓存区数据。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-15 17:34:49
地板
删除某行记录时,如果它是新增行操作 -> getInsertRows
https://demo.grapecity.com.cn/sp ... .html#getInsertRows
删除缓存区 -> sheet.clearPendingChanges
https://demo.grapecity.com.cn/sp ... clearPendingChanges
它是修改行操作 -> getDirtyCells
https://demo.grapecity.com.cn/sp ... .html#getDirtyCells

利用上述提到的API去判断即可。
回复 使用道具 举报
IT-Weaver
初级会员   /  发表于:2021-12-17 14:15:36
5#
Clark.Pan 发表于 2021-12-15 17:34
删除某行记录时,如果它是新增行操作 -> getInsertRows
https://demo.grapecity.com.cn/spreadjs/help/ap ...

请问v12中,getDeletedRows和getDirtyRows,分别存放的是什么数据?经过测试,现在getDeletedRows的结果集是我真实执行了deleteRows函数后的结果集,但是getDirtyRows一直为空数组。
回复 使用道具 举报
IT-Weaver
初级会员   /  发表于:2021-12-17 14:21:18
6#
Clark.Pan 发表于 2021-12-15 17:34
删除某行记录时,如果它是新增行操作 -> getInsertRows
https://demo.grapecity.com.cn/spreadjs/help/ap ...

另外,现在我们是否可以直接操作getDeletedRows方法所操作的变量? 如果可以操作是否有类似pop或者push的方法?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-17 14:25:55
7#
IT-Weaver 发表于 2021-12-17 14:15
请问v12中,getDeletedRows和getDirtyRows,分别存放的是什么数据?经过测试,现在getDeletedRows的结果 ...

getDeletedRows中所有删除行的记录都会记录到getDeletedRows中
getDirtyRows代表脏数据,出了新增和删除之外,其余对表单上有修改记录可以通过getDirtyRows获取到。
getDeletedRows只是一个记录脏数据的容器,容器本身不允许用户自己去修改,所以不提供pop或push之类的方法。只有一个clearPendingChanges方法用于清空当前容器中的记录
回复 使用道具 举报
IT-Weaver
初级会员   /  发表于:2021-12-17 14:31:40
8#
Clark.Pan 发表于 2021-12-17 14:25
getDeletedRows中所有删除行的记录都会记录到getDeletedRows中
getDirtyRows代表脏数据,出了新增和删除 ...

我们的需求是清除getDeletedRows的部分记录,而不是全部记录,这个就有点麻烦了现在。  脏数据的概念已经测试出来了,应该是类似保存步骤数据,可以做到步骤回滚,类似Ctrl+z
回复 使用道具 举报
IT-Weaver
初级会员   /  发表于:2021-12-17 14:33:11
9#
Clark.Pan 发表于 2021-12-17 14:25
getDeletedRows中所有删除行的记录都会记录到getDeletedRows中
getDirtyRows代表脏数据,出了新增和删除 ...

所以我们现在核心的问题就集中在了如何部分删除getDeletedRows结果集的数据。而不是通过clearPendingChanges彻底清除它。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-15 15:35:08
10#
那你考虑一下自己维护一个相关的列表,每次利用我们的API查询到脏数据的信息然后维护到咱们自己的列表中。这样您可以自行控制列表中的内容
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部