找回密码
 立即注册

QQ登录

只需一步,快速开始

@city_CH2017

注册会员

7

主题

64

帖子

121

积分

注册会员

积分
121

微信认证勋章

@city_CH2017
注册会员   /  发表于:2019-9-10 20:21  /   查看:11416  /  回复:14
1金币
效果:点击单元格获取单元格的坐标,用绝对定位把放大镜放在单元格右侧(见图3)。
我已现在已经通过 "getCellBoundingRect" 获取到坐标(见图1),显示正常情况下把FlexGrid表格封装成Vue组件。在调用组件的时候,发现通过“getCellBoundingRect”获取坐标已经不准确了(见图2)。

(图1)
(图2)
(图3)
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,咱们可以换个逻辑实现: 附件是完整Demo。

15 个回复

倒序浏览
最佳答案
最佳答案
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-9-10 20:22:00
来自 13#
您好,咱们可以换个逻辑实现:
  1. flex.addEventListener(flex.hostElement, 'click', (e) => {
  2.         let $hit = flex.hitTest(e)
  3.         let $rowIndex = $hit.row
  4.         let $colIndex = $hit.col
  5.         if(Math.sign($rowIndex) === -1 || Math.sign($colIndex) === -1){
  6.           return false
  7.         } // 判断负数

  8.         /* 显示(放大镜)帮助索引 */
  9.         let rcCell = flex.getCellBoundingRect($rowIndex, $colIndex) // 单元格坐标
  10.                 let host = flex.hostElement;
  11.                 let hostLeft = host.getBoundingClientRect().left;
  12.                 let hostTop = host.getBoundingClientRect().top;
  13.                 let point = $hit.point;
  14.         this.helpIndex = {
  15.           left: rcCell.left + rcCell.width - hostLeft + 'px',
  16.           top: rcCell.top - hostTop + 'px'
  17.         }
  18.       })
复制代码


附件是完整Demo。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

非常感谢。  发表于 2019-9-19 11:03

评分

参与人数 1满意度 +5 收起 理由
@city_CH2017 + 5 很给力!

查看全部评分

回复 使用道具 举报
@city_CH2017
注册会员   /  发表于:2019-9-10 20:28:37
2#

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
@city_CH2017
注册会员   /  发表于:2019-9-10 20:29:45
3#
想问一下版主,这个“getCellBoundingRect”是怎么来算这个坐标的
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-9-11 09:59:14
4#
您好,您的这个业务场景,我觉得是否可以考虑一下条件样式来实现呢?比如这个例子您参考一下看看:

https://demo.grapecity.com.cn/wi ... ionalStyling/purejs

如果觉得不合适,能否提供一个能重现问题的Demo,我们调试排查一下看看问题出在哪里。
回复 使用道具 举报
@city_CH2017
注册会员   /  发表于:2019-9-11 11:23:49
5#
KevinChen 发表于 2019-9-11 09:59
您好,您的这个业务场景,我觉得是否可以考虑一下条件样式来实现呢?比如这个例子您参考一下看看:

http ...

条件样式可以把“放大镜”这个元素放在外面吗?也就是输入框右侧外面吗?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-9-11 11:54:37
6#
@city_CH2017 发表于 2019-9-11 11:23
条件样式可以把“放大镜”这个元素放在外面吗?也就是输入框右侧外面吗?

这个不行,元素只能放在cell内部,外侧属于另一个cell的区域,会盖住前一个cell的内容。
回复 使用道具 举报
@city_CH2017
注册会员   /  发表于:2019-9-11 14:22:24
7#
KevinChen 发表于 2019-9-11 11:54
这个不行,元素只能放在cell内部,外侧属于另一个cell的区域,会盖住前一个cell的内容。

那就只能通过getCellBoundingRect 获取单元格坐标,使用绝对定位来显示了。我整理一下demo发给你
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-9-12 08:39:12
8#
好的,您发一个Demo,我这边排查一下问题
回复 使用道具 举报
@city_CH2017
注册会员   /  发表于:2019-9-17 10:52:53
9#


已上传Demo,你查看一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部