IT-Weaver 发表于 2021-12-15 15:35:07

【V12】 sheet中的 deletedRows 属性问题(40478)

本帖最后由 Clark.Pan 于 2022-3-30 14:13 编辑

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

Clark.Pan 发表于 2021-12-15 16:39:55

V12中仍可以通过getDeletedRows方法来获取删除的行记录
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/cells/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 发表于 2021-12-15 17:34:49

删除某行记录时,如果它是新增行操作 -> getInsertRows
https://demo.grapecity.com.cn/spreadjs/help/api/GC.Spread.Sheets.Worksheet.html#getInsertRows
删除缓存区 -> sheet.clearPendingChanges
https://demo.grapecity.com.cn/spreadjs/help/api/GC.Spread.Sheets.Worksheet.html#clearPendingChanges
它是修改行操作 -> getDirtyCells
https://demo.grapecity.com.cn/spreadjs/help/api/GC.Spread.Sheets.Worksheet.html#getDirtyCells

利用上述提到的API去判断即可。

IT-Weaver 发表于 2021-12-17 14:15:36

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

Clark.Pan 发表于 2021-12-15 17:34
删除某行记录时,如果它是新增行操作 -> getInsertRows
https://demo.grapecity.com.cn/spreadjs/help/ap ...

另外,现在我们是否可以直接操作getDeletedRows方法所操作的变量? 如果可以操作是否有类似pop或者push的方法?

Clark.Pan 发表于 2021-12-17 14:25:55

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

Clark.Pan 发表于 2021-12-17 14:25
getDeletedRows中所有删除行的记录都会记录到getDeletedRows中
getDirtyRows代表脏数据,出了新增和删除 ...

我们的需求是清除getDeletedRows的部分记录,而不是全部记录,这个就有点麻烦了现在。脏数据的概念已经测试出来了,应该是类似保存步骤数据,可以做到步骤回滚,类似Ctrl+z

IT-Weaver 发表于 2021-12-17 14:33:11

Clark.Pan 发表于 2021-12-17 14:25
getDeletedRows中所有删除行的记录都会记录到getDeletedRows中
getDirtyRows代表脏数据,出了新增和删除 ...

所以我们现在核心的问题就集中在了如何部分删除getDeletedRows结果集的数据。而不是通过clearPendingChanges彻底清除它。

Clark.Pan 发表于 2021-12-15 15:35:08

那你考虑一下自己维护一个相关的列表,每次利用我们的API查询到脏数据的信息然后维护到咱们自己的列表中。这样您可以自行控制列表中的内容
页: [1] 2
查看完整版本: 【V12】 sheet中的 deletedRows 属性问题(40478)