找回密码
 立即注册

QQ登录

只需一步,快速开始

湖南大商帮

初级会员

48

主题

162

帖子

486

积分

初级会员

积分
486
湖南大商帮
初级会员   /  发表于:2024-10-15 16:17  /   查看:294  /  回复:8
本帖最后由 Wilson.Zhang 于 2024-10-16 11:46 编辑


产品:SpreadJS
版本:17.1.7
调研编号:SJS-26883

Excel里,当单元格处于编辑状态时,鼠标滚轮滚动,整个表格也会跟着一起上下滚动,但是spread里我试过了,在线编辑器里随便双击某个单元格进入编辑状态,鼠标不会响应滚动事件,要光标离开编辑框区域才会滚动,这个行为和Excel不一致,客户对此也多有吐槽,希望能给个方案

8 个回复

倒序浏览
AKA_HSTS
注册会员   /  发表于:2024-10-15 17:26:11
沙发
这个感觉Excel 的策略不见得更好,单元格进入编辑状态后,其实也是一个文本编辑框,举个极端点的例子,如果单元格中内容中有多段文字,编辑状态hover 在编辑框内可以保证鼠标滚动是在较长的文本编辑框内滚动以全部展示单元格中内容,例如下面截图所示的情况。但是同样情况,对于Excel,却会不太容易通过滚动滚轮方式自由获取文本编辑框中指定位置。
image.png152209776.png

评分

参与人数 1金币 +300 收起 理由
Wilson.Zhang + 300

查看全部评分

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-15 17:38:59
板凳
本帖最后由 Wilson.Zhang 于 2024-10-15 17:48 编辑

您好!楼上用户所言极是,功能尤其设计的理念,为了支持各种各样不同的需求场景。诚如楼上用户所言,SpreadJS的这一功能设计有其独特之处。就您的需求而言,可能有使用Excel的操作习惯会促使您希望能跟Excel保持一致,但就使用而言,移动光标至编辑状态的单元格之外即可滚动鼠标以拖动Worksheet页面,并不会阻碍使用。
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2024-10-15 17:49:22
地板
但是用户并不知道需要移动到文本框以外的地方才能滚动的呀,因为点击单元格就自动进入编辑模式了,然后发现滚动不了认为软件有问题,是不是这个地方考虑加个设置项呢,编辑状态时是跟随滚动还是区域外跟随滚动
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2024-10-16 09:13:31
5#
版主的回答真的让人伤心呢,有的spread问题吧我一问,就说Excel是这个德行,葡萄城是参照他的,有的行为和Excel不一致了,就变成了你们的特色,哎~~~
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-16 11:36:01
6#
湖南大商帮 发表于 2024-10-16 09:13
版主的回答真的让人伤心呢,有的spread问题吧我一问,就说Excel是这个德行,葡萄城是参照他的,有的行为和E ...

哈哈哈哈,您有点儿幽默在的,理解您的心情,请您容我啰嗦几句。


我们有责任向每一位用户介绍用户关心的功能在SpreadJS和MS Excel之间的异同,这样是为了让用户更好的理解功能,消除疑虑。熟悉SpreadJS的朋友都了解SpreadJS有一大特点是类Excel操作,首先从UI界面上与MS Excel保持了一致;其次,大部分功能也与MS Excel一致,但是也存在有与MS Excel表现不一样的功能,当然是产品设计时产生的一些考虑促成的。另外,更重要的是,SpreadJS在提供基础功能的同时,公开了API,以供用户根据实际需求自定义扩展或增强相关功能,以实现个性化的业务场景需求。

关于您介绍的业务场景需求,我们正在调研,需要一些时间,所以请您耐心等待下。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-17 11:08:37
7#
您好!经调研,确系SpreadJS和MS Excel的一个差异点,这个功能已经存在很多年了,如前所述,其存在必有其合理性。

针对您的需求场景,提供如下所述方案:

1. 对window监听mousewheel事件,以监听鼠标滚动事件。
2. 判断当前sheet是否为编辑状态。
3. 如果当前sheet处于编辑状态,则先令spread实例失焦,即退出编辑,然后再对其聚焦,方能结合鼠标滚动同步滚动页面。

可以参考如下代码:
  1. window.addEventListener('mousewheel', function(event) {
  2.     if (spread.getActiveSheet().isEditing()) {
  3.         console.log('鼠标滚动:', event.wheelDelta);
  4.         //  令spread实例失焦
  5.         spread.focus(false);
  6.         //  令spread实例聚焦,以同步鼠标滚动
  7.         spread.focus(true);
  8.     }
  9. });
复制代码

上述代码执行效果如下动图所示,虽然上述代码可以帮助在编辑单元格时滚动鼠标以滚动页面,但是正在被编辑的单元格也将退出编辑。综上所述,需要您自行评估下是否能满足您的需求。
鼠标滚动.gif
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2024-10-17 15:42:59
8#
好的,感谢指导,我跟团队反馈一下改造的思路
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-17 17:42:22
9#
湖南大商帮 发表于 2024-10-17 15:42
好的,感谢指导,我跟团队反馈一下改造的思路

不客气!看来问题已经得到有效解答了,那就结帖了,如有新问题,欢迎发新帖沟通。

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