找回密码
 立即注册

QQ登录

只需一步,快速开始

yue1859921
初级会员   /  发表于:2024-9-12 10:23  /   查看:86  /  回复:4
1金币
我的需求是,表格里某个单元格数据发生变化了,就需要记录留痕,并且能查看到修改的记录  什么时间改的 改后的内容 谁修改的  等等

4 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:7 天前
沙发
本帖最后由 Wilson.Zhang 于 2024-9-12 12:30 编辑

您好!可以通过ValueChanged事件辅助自定义实现,ValueChanged可以监听到发生内容变化的单元格、新旧值等信息,如下图所示:
1726115411650.png892262573.png

关于操作事件和修改人,您的系统中应该可以访问到当前登录用户,在ValueChanged事件的处理函数中集成这些信息即可,可参考如下代码:
  1. sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function(e, args) {
  2.     //  操作时间
  3.     const options = {
  4.         year: 'numeric',
  5.         month: '2-digit',
  6.         day: '2-digit',
  7.         hour: '2-digit',
  8.         minute: '2-digit',
  9.         second: '2-digit'
  10.     };
  11.     const readableDateWithOptions = new Date().toLocaleDateString('zh-CN', options);
  12.     var record = {
  13.         row: args.row,
  14.         col: args.col,
  15.         oldValue: args.oldValue,
  16.         newValue: args.newValue,
  17.         updateTime: readableDateWithOptions,
  18.         //  修改用户
  19.         updateUser: 'user'
  20.     }

  21.     console.log('updateRecord: ', record);
  22. });
复制代码


回复 使用道具 举报
yue1859921
初级会员   /  发表于:7 天前
板凳
Wilson.Zhang 发表于 2024-9-12 12:15
您好!可以通过ValueChanged事件辅助自定义实现,ValueChanged可以监听到发生内容变化的单元格、新旧值等信 ...

我想在页面能够查看到哪个单元格变化  变更的历史信息  如何实现?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:7 天前
地板
SpreadJS原生上没有相关的接口可以直接查看,只能您自行通过楼上说的事件自行记录来实现。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
5#
yue1859921 发表于 2024-9-12 12:23
我想在页面能够查看到哪个单元格变化  变更的历史信息  如何实现?

一般情况下,值发生变化的单元格即脏数据单元格,其所在行也为脏数据行,可以通过Worksheet:getDirtyCells()和Worksheet:getDirtyRows()分别获取脏行集合和脏单元格集合,如下动图所示:

获取脏状态.gif

可以参考官网教程和API文档了解详情:
教程--https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/cells/edit/dirty-items#timestamp
          https://demo.grapecity.com.cn/spreadjs/help/docs/features/cells/dirty#site_main_content-doc-content_title
Worksheet:getDirtyCells()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#getdirtycells
Worksheet:getDirtyRows()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#getdirtyrows
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部