找回密码
 立即注册

QQ登录

只需一步,快速开始

louis

注册会员

7

主题

28

帖子

71

积分

注册会员

积分
71
louis
注册会员   /  发表于:2021-3-17 17:27  /   查看:5924  /  回复:14
本帖最后由 ClarkPan 于 2021-3-18 12:09 编辑

官网例子
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/cells/auto-merge/range-auto-merge/purejs

1. 将43行多复制几行,比如3行(加上原来的2行一共5行)
2. 28行 rowCount 设置为 50 行,主要是为了能滚动。
3. autoMerge 之后追加一下超链接
  1. sheet.setHyperlink(1, 0, {
  2.   linkColor: '#0066cc',
  3.   visitedLinkColor: '#3399ff',
  4.   command: () => {alert('click')},
  5.             });
复制代码


运行,点击超链接,看到 alert 提示。
滚动一下,让 “Today Show”(超链接)上移1个或多个单元格,然后你会发现,这个超链接无法点击!

15 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-2 11:57:43
推荐
本帖最后由 lynn512 于 2021-4-2 11:58 编辑

您好,此问题已在V14.0.10中修复,您可以通过npm升级。请升级至最新版本测试下。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-17 17:43:00
沙发
您好,您提供的demo中并没有43行或者28行,demo中满共只有5行,所以不太明白该如何重现您的问题。不如您直接上传一个能够重现问题的demo,我们帮您看看
image.png520559386.png
回复 使用道具 举报
louis
注册会员   /  发表于:2021-3-17 17:49:45
板凳
不够详细吗?你们官方的 demo,让你改3处几行代码…… 1分钟用不了,甩给客户不太好吧?
回复 使用道具 举报
louis
注册会员   /  发表于:2021-3-17 17:53:32
地板
把这个贴到你那个 demo 下面的,app.js 替换,点击运行,点击链接没有问题,鼠标滑轮向下滚动一点,你会发现超链接点不了了!

  1. window.onload = function () {
  2.     var spread = new GC.Spread.Sheets.Workbook(_getElementById('ss'), { sheetCount: 1 });
  3.     initSpread(spread);
  4. };

  5. function initSpread(spread) {
  6.     var switchAutoMergeDirection = _getElementById("switchAutoMergeDirection");
  7.     switchAutoMergeDirection.addEventListener("change", function (event) {
  8.         var range = new GC.Spread.Sheets.Range(-1, -1, -1, -1);
  9.         var sheet = spread.getActiveSheet();
  10.         sheet.suspendPaint();
  11.         //remove old auto merge range
  12.         sheet.autoMerge(range, GC.Spread.Sheets.AutoMerge.AutoMergeDirection.none);
  13.         //add new auto merge range
  14.         sheet.autoMerge(range, parseInt(event.target.value));
  15.         sheet.resumePaint();
  16.     });
  17.     spread.suspendPaint();
  18.     spread.options.showVerticalScrollbar = false;
  19.     spread.options.showHorizontalScrollbar = false;
  20.     spread.options.tabStripVisible = false;
  21.     //init sheet
  22.     var sheet = spread.getActiveSheet();
  23.     sheet.defaults.rowHeight = 40;
  24.     sheet.defaults.colWidth = 100;
  25.     sheet.defaults.colHeaderRowHeight = 40;
  26.     sheet.defaults.rowHeaderColWidth = 60;
  27.     sheet.setRowCount(50);
  28.     sheet.setColumnCount(7);
  29.     var defaultStyle = sheet.getDefaultStyle();
  30.     defaultStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center;
  31.     defaultStyle.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
  32.     sheet.setDefaultStyle(defaultStyle);
  33.     ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"].forEach(function (value, index) {
  34.         sheet.setValue(0, index, value, GC.Spread.Sheets.SheetArea.colHeader);
  35.     });
  36.     ["12:00", "13:00", "14:00", "15:00", "16:00"].forEach(function (value, index) {
  37.         sheet.setValue(index, 0, value, GC.Spread.Sheets.SheetArea.rowHeader);
  38.     });
  39.     sheet.setArray(0, 0, [
  40.         ["Walker", "Morning Show", "Morning Show", "Sport", "Weather", "N/A", "N/A"],
  41.         ["Today Show", "Today Show", "Kid Zone", "Football", "Soap Opera", "N/A", "N/A"],
  42.         ["Today Show", "Today Show", "Kid Zone", "Football", "Soap Opera", "N/A", "N/A"],
  43.         ["Today Show", "Today Show", "Kid Zone", "Football", "Soap Opera", "N/A", "N/A"],
  44.         ["Today Show", "Today Show", "Kid Zone", "Football", "Soap Opera", "N/A", "N/A"],
  45.         ["Today Show", "Today Show", "Sesame Street", "Football", "Market Watch", "N/A", "N/A"],
  46.         ["Today Show", "Today Show", "Kid Zone", "Football", "Soap Opera", "N/A", "N/A"],
  47.         ["News", "News", "News", "News", "News", "N/A", "N/A"],
  48.         ["News", "News", "News", "News", "News", "N/A", "N/A"]
  49.     ]);
  50.     //apply auto merge
  51.     var range = new GC.Spread.Sheets.Range(-1, -1, -1, -1);
  52.     sheet.autoMerge(range, GC.Spread.Sheets.AutoMerge.AutoMergeDirection.columnRow);

  53.             sheet.setHyperlink(1, 0, {
  54.               linkColor: '#0066cc',
  55.               visitedLinkColor: '#3399ff',
  56.               command: () => {alert('click')},
  57.             });
  58.             sheet.setHyperlink(2, 0, {
  59.               linkColor: '#0066cc',
  60.               visitedLinkColor: '#3399ff',
  61.               command: () => {alert('click')},
  62.             });

  63.     spread.resumePaint();
  64. }

  65. function _getElementById(id) {
  66.     return document.getElementById(id);
  67. }
复制代码


回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-17 17:54:09
5#
麻烦您看清楚下面的图片
image.png668539733.png
demo中没有您所说的43行和28行,如果您不想提供demo就详细的把操作描述清楚,谢谢

点评

亲,说的是代码……  发表于 2021-3-17 17:56
回复 使用道具 举报
louis
注册会员   /  发表于:2021-3-18 11:32:28
6#
附件提供例子:(另外一个帖子Excel导出头部合并不会被应用 4楼你们提供的代码基础上修改的,在46~56行之间插入了几行代码)
重现步骤:
1. 打开附件中的 index.html,会看到 viewport 中第一个格子中 "1" 被设定了超链接,点击,会弹出 alert,没问题!。
2. 注意 "1" 的那块区域是个合并区域(合并了5行),向下拉一下滚动条,让 "1" 格子的可视区变成少于5行,再去点击 "1",不会弹出 alert,问题重现。

features_cells_auto-merge_header-auto-merge_JavaScript.zip

2.45 KB, 下载次数: 275

重现例子

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-18 12:08:19
7#
明白了,我先把这个问题报上去(SJS-8018),您可以再详细的说一下您想要实现的需求,这样我们可以帮您看看是否可以有别的更适合的方法来完成。
回复 使用道具 举报
louis
注册会员   /  发表于:2021-3-18 13:30:46
8#
ClarkPan 发表于 2021-3-18 12:08
明白了,我先把这个问题报上去(SJS-8018),您可以再详细的说一下您想要实现的需求,这样我们可以帮您看看是 ...

我们实现了一种复杂的交叉表,使用 SpeardJS 来呈现, 并利用诸如 单元格合并、导出等功能来简化我们的开发。

单元格内的超链接(command 回调),点击后进行下钻、展明细等动作,这个基础功能对我们来说非常重要。
我们有尝试过使用单元格(模拟 超链接 风格,cursor 为 pointer 未搞定)点击事件来处理这样的需求,但对于合并的单元格子,范围内被合并的空白格子也会响应,较难处理。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-18 13:36:06
9#
明白了,那等待我们这边功能修复吧,修复了我会这里直接回复您
回复 使用道具 举报
louis
注册会员   /  发表于:2021-4-2 11:35:59
10#
请问下,目前有进展吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部