innerwang 发表于 2023-12-6 18:53:32

单元格点击事件是否可以拿到原始的event

本帖最后由 innerwang 于 2023-12-6 19:08 编辑



如题:主要需求是想要获取触发点击时鼠标在整个视口中的位置/坐标, 基于此来弹出一个定位弹窗

AlexZ 发表于 2023-12-7 00:03:32

使用 Hittest 获取鼠标点击时的位置(注意,需要做相对位置的转换)


具体看这个例子:https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/workbook/hit-testing/purejs

innerwang 发表于 2023-12-7 15:18:53

AlexZ 发表于 2023-12-7 00:03
使用 Hittest 获取鼠标点击时的位置(注意,需要做相对位置的转换)




还需要自行去监听点击事件么?? 能不能在 CellClick 这个 事件里把原始 event 信息传出来?

Ellia.Duan 发表于 2023-12-7 17:02:26

您好,可以使用如下代码来获取单元格所在位置:
let containerPosition = {
            left: spread.getHost().getBoundingClientRect().left,
            top: spread.getHost().getBoundingClientRect().top
      }
spread.bind(GC.Spread.Sheets.Events.CellClick, function (e, info) {
    var cellRect = spread.getActiveSheet().getCellRect(info.row,info.col);

    console.log('x:', cellRect.x + containerPosition.left)
    console.log('y:', cellRect.y + containerPosition.top)
});执行结果如下图 所示:

注意,此时cellRect返回的坐标是单元格左上角位置,并不是鼠标此时的位置。
如果您想要获取鼠标此时的位置,可以直接使用此代码:


spread.getHost().addEventListener('click', function(e){
      var y = e.pageY - this.offsetTop;
      var x = e.pageX - this.offsetLeft;
      console.log(y,x)

    });


innerwang 发表于 2023-12-7 19:13:26

Ellia.Duan 发表于 2023-12-7 17:02
您好,可以使用如下代码来获取单元格所在位置:
执行结果如下图 所示:



只能自行去监听点击事件吗? 你们能不能做一下功能增强,在 spread的CellClick 事件的回调参数中同时传出这个事件?? 因为我也需要 CellClick 的数据,也需要鼠标位置,为了得到所有的数据还得去两个地方分别获取,有些麻烦

AlexZ 发表于 2023-12-7 19:18:17

innerwang 发表于 2023-12-7 19:13
只能自行去监听点击事件吗? 你们能不能做一下功能增强,在 spread的CellClick 事件的回调参数中同时传 ...

背景和需求都了解了

产品目前没有增强事件参数的计划

innerwang 发表于 2023-12-8 09:59:38

AlexZ 发表于 2023-12-7 19:18
背景和需求都了解了

产品目前没有增强事件参数的计划

好,了解了, 谢谢               

Lynn.Dou 发表于 2023-12-8 11:35:07

:mj72: 那本帖就先结贴了,有问题欢迎另开新帖交流。
页: [1]
查看完整版本: 单元格点击事件是否可以拿到原始的event