御灵 发表于 2024-11-19 16:14:19

[17.1.5]获取table插入行的问题

本帖最后由 Clark.Pan 于 2024-11-20 14:04 编辑

我监听了TableRowsChanged事件发现删除的时候可以获取delectItem但是我删除某行,再ctrl+z撤销删除的时候就获取不到insert是哪一行了 监听事件的返回如图 这个该怎么获取呢

Clark.Pan 发表于 2024-11-19 16:14:20

根据截图来看,insertRow的时候
row 为1 :说明是在table中数据区域的第二行(0代表第一行)
count 为1 :说明说明插入的行数是1行
isAfter为false:说明是在第二行的行前插入而非行后插入
有上述反馈参数,可以确定插入的是哪一行

御灵 发表于 2024-11-19 16:43:55

Clark.Pan 发表于 2024-11-19 16:38
根据截图来看,insertRow的时候
row 为1 :说明是在table中数据区域的第二行(0代表第一行)
count 为1...

那就是我直接用第几行去获取table的数据是吧

Lynn.Dou 发表于 2024-11-19 16:45:51

您好,
您想通过deleteItem判断具体删除/撤销了哪条数据对吗?如果是:
在TableRowsChanged事件中,参数row表示删除行或新增行的索引,以此结合 sheet.getDataSource().getSource() 获取数据源的接口,来获取新增的具体数据。
如下示例:
spread.bind(GC.Spread.Sheets.Events.TableRowsChanged, function (e, data) {
    console.log(data);
    if(data.propertyName === "tableInsertRows") {
      console.log(data.row);
      // 获取数据源
      var dataSource = sheet.getDataSource().getSource();
      var table = sheet.tables.all();
      var tableBindingPath = table.bindingPath();
      // dataSource 返回的为table中的数据源
      console.log("insertDataItem", dataSource)
    }
});

御灵 发表于 2024-11-19 17:27:38

Lynn.Dou 发表于 2024-11-19 16:45
您好,
您想通过deleteItem判断具体删除/撤销了哪条数据对吗?如果是:
在TableRowsChanged事件中,参数r ...

您好 要是多行删除再撤销 怎么办呢 我看返回count变成3了 但是row还是0

御灵 发表于 2024-11-19 17:32:38

如图

Lynn.Dou 发表于 2024-11-19 17:36:41

撤销多行的话,结合row、count值动态调整下从数据源获取对应数据的方法即可。
table数据源本质是一个数组,传递不同的参数即可动态获取想要的某些条数据。上述代码是一个示例,您结合实际业务需求调整下即可。

御灵 发表于 2024-11-20 10:10:20

Lynn.Dou 发表于 2024-11-19 17:36
撤销多行的话,结合row、count值动态调整下从数据源获取对应数据的方法即可。
table数据源本质是一个数组 ...

但只监听到了一次事件呀。。是我监听的方式不对吗?

御灵 发表于 2024-11-20 10:10:50

用的这种方式

御灵 发表于 2024-11-20 10:34:24

如图 删除了两行再撤回 只监听到了一次
页: [1] 2
查看完整版本: [17.1.5]获取table插入行的问题