找回密码
 立即注册

QQ登录

只需一步,快速开始

BoomPotato

注册会员

5

主题

12

帖子

169

积分

注册会员

积分
169

微信认证勋章

BoomPotato
注册会员   /  发表于:2019-6-5 17:09  /   查看:2433  /  回复:3
初始化数据时想选中非表头数据的第一个单元格,使用的是sheet.setActiveCell()。选中改单元格后我想触发Sheets.Events.SelectionChanged事件,然后返回选中单元格所在行的数据。请问该如何触发该事件。spreadSelectionChanged = (spread) => {
    const {selectionChanged} = this.props
    const activeSheet = spread.getActiveSheet()
    spread.bind(GC.Spread.Sheets.Events.SelectionChanged, (e, args) => {
        const selection = args.newSelections.pop(),
            columnCount = activeSheet.getColumnCount()
        if (selection.rowCount === 1) {
            const rowIndex = selection.row
            let cols = []
            // 声明在 for循环上面不可取 会造成cols中的数据都相同
            for (let i = 0; i < columnCount; i++) {
                const cellHeader = activeSheet.getValue(_.toInteger(0), _.toInteger(i), GC.Spread.Sheets.SheetArea.colHeader)
                const value = activeSheet.getCell(_.toInteger(rowIndex), i)
                    .value()
                let col = {header: cellHeader, value: value}
                cols.push(col)
            }
            if (!_.isUndefined(selectionChanged)) {
                selectionChanged(cols)
            }
        }
    })
}

3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-6-6 11:37:17
沙发
您好,采用命令改变选择区域可以触发事件,但直接调用setActiveCell不能触发事件,

命令也没有能指定选中具体某个单元格的,

您实际上可以在setActiveCell执行后紧跟着执行您自己需要处理的逻辑即可。
回复 使用道具 举报
BoomPotato
注册会员   /  发表于:2019-6-6 11:53:39
板凳
KevinChen 发表于 2019-6-6 11:37
您好,采用命令改变选择区域可以触发事件,但直接调用setActiveCell不能触发事件,

命令也没有能指定选 ...

好的,谢谢,问题已经解决。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-6-6 14:59:54
地板
感谢反馈,本帖结贴了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部