找回密码
 立即注册

QQ登录

只需一步,快速开始

mis

注册会员

4

主题

25

帖子

79

积分

注册会员

积分
79
mis
注册会员   /  发表于:2021-11-24 15:02  /   查看:1486  /  回复:5
1金币
在有多行列头的表格上右键 弹出右键菜单, 如何能在此时获取到当前右键选中列头单元格的row下标?

比如附件里图片: 在2019上右键需要得到文本2019, 在Q2上右键得到文本Q2 (2019, Q2都为列头)

目前是想通过sheet.getValue(row, col, GC.Spread.Sheets.SheetArea.colHeader)获取, 但是不知道怎样能拿到row下标
DDD099B9-2AFF-4154-BFF1-17354B2611A0.png
435FD6FF-5D54-4F5E-96FD-520FD702DDC6.png

最佳答案

查看完整内容

可以通过监听onOpenMenu获取打开右键菜单的单元格行列信息。 主要代码如下: 完整代码请查看附件demo

5 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-24 15:02:48
来自 3#
可以通过监听onOpenMenu获取打开右键菜单的单元格行列信息。
主要代码如下:
  1. function MyContextMenu() {}
  2.             MyContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
  3.             MyContextMenu.prototype.onOpenMenu = function (menuData, itemsDataForShown, hitInfo, spread) {
  4.                 // 获取行列信息
  5.                 console.log(hitInfo);
  6.                 var worksheetHitInfo = hitInfo.worksheetHitInfo;
  7.                 // 表示选择的是列头右键菜单
  8.                 if(worksheetHitInfo.rowViewportIndex == -1) {
  9.                     // 获取行列索引
  10.                     var row = worksheetHitInfo.row;
  11.                     var col = worksheetHitInfo.col;
  12.                     // 判断是否为合并单元格,如果是则获取合并单元格左上角单元格的row、col,进一步获取合并单元格的实际value
  13.                     var range = new GC.Spread.Sheets.Range(row,col,1,1);
  14.                     var spanArr = sheet.getSpans(range, GC.Spread.Sheets.SheetArea.colHeader);
  15.                     if(spanArr.length > 0) {
  16.                         console.log(spanArr[0]);
  17.                         var relRow = spanArr[0].row;
  18.                         var relCol = spanArr[0].col;
  19.                         var relValue = sheet.getValue(relRow, relCol, GC.Spread.Sheets.SheetArea.colHeader);
  20.                         alert("选择列头单元格的值为" + relValue);
  21.                     } else {
  22.                         var value = sheet.getValue(row, col, GC.Spread.Sheets.SheetArea.colHeader);
  23.                         alert("选择列头单元格的值为" + value);
  24.                     }

  25.                 }

  26.             };
  27.             var contextMenu = new MyContextMenu();
  28.             spread.contextMenu = contextMenu;
复制代码
完整代码请查看附件demo

demo.html

4.46 KB, 下载次数: 30

回复 使用道具 举报
mis
注册会员   /  发表于:2021-11-24 15:44:42
2#
附件为demo

在多行列头的表格列头上右键操作.zip

5 KB, 下载次数: 25

回复 使用道具 举报
mis
注册会员   /  发表于:2021-11-24 16:07:25
4#
Lynn.Dou 发表于 2021-11-24 15:46
可以通过监听onOpenMenu获取打开右键菜单的单元格行列信息。
主要代码如下:
完整代码请查看附件demo

我试试, 谢谢
回复 使用道具 举报
mis
注册会员   /  发表于:2021-11-24 16:17:08
5#

可以拿到我想要的数据, 非常感谢
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-24 16:31:55
6#
您客气了,如果对您的问题有所帮助可以给我打个5分好评哦~
本帖就先结贴了,有问题欢迎另开新帖交流。

评分

参与人数 1满意度 +5 收起 理由
mis + 5

查看全部评分

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