找回密码
 立即注册

QQ登录

只需一步,快速开始

柠檬汽水

初级会员

9

主题

32

帖子

309

积分

初级会员

积分
309
柠檬汽水
初级会员   /  发表于:2021-1-8 16:29  /   查看:5314  /  回复:14
本帖最后由 柠檬汽水 于 2021-1-12 15:58 编辑

现在需要实现一个批量删除连接口的需求用RowChanging事件写的,选中单行和连续多行的数据的时候,是没有问题的,
但是获取不到ctrl+单击选中的数据 (而且ctrl+单击选中数据的时候,选中几条数据,RowChanging就执行几次事件)
想问一下这个问题该如何解决呢???

14 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-8 16:36:13
沙发
您好,麻烦您提供一个能复现问题的demo以及提供具体的复现步骤,这边给您调研一下。
回复 使用道具 举报
柠檬汽水
初级会员   /  发表于:2021-1-8 16:44:35
板凳
DerrickJiao 发表于 2021-1-8 16:36
您好,麻烦您提供一个能复现问题的demo以及提供具体的复现步骤,这边给您调研一下。

这是我的代码
复现步骤:ctrl+单击,然后点右键删除的时候会执行好多次
let undoManager = spread.undoManager()
      let oldUndo = undoManager.undo
      let undoFlag = false
      undoManager.undo = function() {
        undoFlag = true
        return oldUndo.apply(this, arguments)
      }

      sheet.bind(GC.Spread.Sheets.Events.RowChanging, function(e, info) {
        let count = info.count
        let sheet = info.sheet
        let rowDataArray = []
        if (info.propertyName == 'deleteRows' && !undoFlag) {
          let selections = sheet.getSelections()
          if (selections && selections.length > 0) {
            let sel = selections[0]
            let result = sheet.getArray(sel.row, 0, sel.rowCount, sheet.getColumnCount())
            result.forEach((item, index) => {
              let num = /^[0-9]+.?[0-9]*$/
              if (num.test) {
                let id = item.pop()
                rowDataArray.push(id)
              }
            })
          }
          console.log(rowDataArray, 'rowDataArray')
        }
      })
      sheet.bind(GC.Spread.Sheets.Events.RowChanged, function(e, info) {
        if (info.isUndo) {
          // 标记undo结束
          undoFlag = false
        }
      })
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-8 17:08:04
地板
柠檬汽水 发表于 2021-1-8 16:44
这是我的代码
复现步骤:ctrl+单击,然后点右键删除的时候会执行好多次
let undoManager = spread.und ...

在SpreadJS中,用Ctrl去选择不连续的行的时候,RowChanged事件会根据选择的次数触发,也就是说,每进行一次Ctrl选择时,都会触发一次此事件。

基于此,这是合理的。因此,如果此事件不满足您的需求,建议您使用其他方法或事件。
回复 使用道具 举报
柠檬汽水
初级会员   /  发表于:2021-1-8 17:20:55
5#
DerrickJiao 发表于 2021-1-8 17:08
在SpreadJS中,用Ctrl去选择不连续的行的时候,RowChanged事件会根据选择的次数触发,也就是说,每进行一 ...

想问一下,表格里面的批量删除数如何实现的呢???能否提供一下表格实现的方法呢???
回复 使用道具 举报
柠檬汽水
初级会员   /  发表于:2021-1-8 17:28:52
6#
DerrickJiao 发表于 2021-1-8 17:08
在SpreadJS中,用Ctrl去选择不连续的行的时候,RowChanged事件会根据选择的次数触发,也就是说,每进行一 ...

我们的需求就是在右键删除的时候,可以选择多行或者一行或者间隔多行删除,能否提供一下具体的实现方法呢???
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-8 17:43:16
7#
柠檬汽水 发表于 2021-1-8 17:28
我们的需求就是在右键删除的时候,可以选择多行或者一行或者间隔多行删除,能否提供一下具体的实现方法呢 ...

您可以参考这个插入多行的demo,将其修改成deleteRow即可,间隔多行删除这边可能没有更好的建议了
https://gcdn.grapecity.com.cn/showtopic-81107-1-35.html
回复 使用道具 举报
柠檬汽水
初级会员   /  发表于:2021-1-8 17:59:30
8#
DerrickJiao 发表于 2021-1-8 17:43
您可以参考这个插入多行的demo,将其修改成deleteRow即可,间隔多行删除这边可能没有更好的建议了
https ...

我刚刚看了一下你提供的这个demo,这个删除的也是连续行呀?不是删除的间隔行的方法呀
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-1-8 18:12:48
9#
柠檬汽水 发表于 2021-1-8 17:59
我刚刚看了一下你提供的这个demo,这个删除的也是连续行呀?不是删除的间隔行的方法呀

间隔行删除属于您的业务逻辑,需要您来实现。

这边目前只有删除单行和多行的例子,对不连续行的删除可能没有更好的建议。
回复 使用道具 举报
柠檬汽水
初级会员   /  发表于:2021-1-8 18:16:16
10#
DerrickJiao 发表于 2021-1-8 18:12
间隔行删除属于您的业务逻辑,需要您来实现。

这边目前只有删除单行和多行的例子,对不连续行的删除可 ...

想问一下,有什么可以实现,ctrl+单击的时候获取数据的方法吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部