请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9884

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15500

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-4 00:29  /   查看:713  /  回复:0
本帖最后由 Lynn.Dou 于 2023-8-22 11:58 编辑

需求:

       在线表格编辑器中用代码添加了浮动元素,希望给浮动元素专门设置一些菜单项。
分析:
       在线表格编辑器没有添加浮动元素的功能所以没考虑专门对浮动元素设置专门的菜单选项,需要自己自定义。
思路:
        1.首先需要用到setData方法设置一个专属的标记来区分浮动对象
  1. designer.setData('isFloatingObjectSelected', true)
复制代码

        2.在对应的菜单项的visibleContext中添加这个标记。
  1. config.commandMap = {
  2.   floating_menu1: {
  3.     commandName: "floating_menu1",
  4.     text: "Floating Object Menu Item 1",
  5.     visibleContext: 'isFloatingObjectSelected',
  6.     execute: function (args) {
  7.       alert("custom menu");
  8.     }
  9.   }
  10.             };
复制代码
        3.在workbook.contextMenu.onOpenMenu方法中通过判断是否点击的是浮动对象,来更改上面的标记的值。
  1. workbook.contextMenu.onOpenMenu = function (menuData, menuDataForShown, hitTest, workbook) {
  2.   var designer = GC.Spread.Sheets.Designer.findControl("dss");
  3.   if (hitTest && hitTest.worksheetHitInfo && hitTest.worksheetHitInfo.floatingObjectHitInfo) {
  4.     menuData = menuData.filter((menu) => {
  5.       return menu.command && menu.command.indexOf("floating") > -1;
  6.     })
  7.     designer.setData('isFloatingObjectSelected', true)
  8.   } else {
  9.     designer.setData('isFloatingObjectSelected', false)
  10.   }
  11.   return designerOnOpenMenu.apply(this, arguments);
  12.             }
复制代码

详情见附件demo
image.png224689330.png

custom_contextmenu_floating.html

3.97 KB, 下载次数: 19

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部