找回密码
 立即注册

QQ登录

只需一步,快速开始

snowflakes7

注册会员

6

主题

13

帖子

59

积分

注册会员

积分
59
snowflakes7
注册会员   /  发表于:2023-8-14 18:14  /   查看:1887  /  回复:6
4金币
通过重写onOpenMenu的方式给右键菜单添加项,但原来右键菜单的部分展示项隐藏了,在这个demo基础上怎么修改能实现:不影响原始右键菜单展示的情况下添加项
2a87372cd0621a87f52fa78e9ae332e6.png63566588.png 2e4a1a5faadfc2bdbc4c6f51b07a8341.png347412108.png a654ab20bffa411571481f60fcc7ef22.png201818541.png

<template>
  <div id="app">
    <gc-spread-sheets-designer
      :styleInfo="styleInfo"
      :config="config"
      :spreadOptions="spreadOptions"
      @designerInitialized="designerInitialized"
    >
    </gc-spread-sheets-designer>
  </div>
</template>

<script>
import "@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css";
import "@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css";
import * as GC from "@grapecity/spread-sheets";
import "@grapecity/spread-sheets-print";
import "@grapecity/spread-sheets-shapes";
import "@grapecity/spread-sheets-pivot-addon";
import "@grapecity/spread-sheets-tablesheet";
import "@grapecity/spread-sheets-resources-zh";
GC.Spread.Common.CultureManager.culture("zh-cn");
import "@grapecity/spread-sheets-designer-resources-cn";
import "./custom.css";
import * as ExcelIO from "@grapecity/spread-excelio";

//Apply License
//GC.Spread.Sheets.LicenseKey = 'sjs-distribution-key';
//ExcelIO.LicenseKey = 'sjs-distribution-key';
//GC.Spread.Sheets.Designer.LicenseKey = 'designer-component-distribution-key';

import { Designer } from "@grapecity/spread-sheets-designer-vue";

export default {
  name: "App",
  data: function() {
    var config = GC.Spread.Sheets.Designer.DefaultConfig;
    config.commandMap = {
      Welcome: {
        title: "Welcome",
        text: "Welcome",
        iconClass: "ribbon-button-welcome",
        bigButton: "true",
        commandName: "Welcome",
        execute: async (context, propertyName, fontItalicChecked) => {
          alert("Welcome to new designer.");
        }
      }
    };
    config.ribbon[0].buttonGroups.unshift({
      label: "NewDesigner",
      thumbnailClass: "welcome",
      commandGroup: {
        children: [
          {
            direction: "vertical",
            commands: ["Welcome"]
          }
          // This is custom button ----------------end-------------
        ]
      }
    });
    return {
      styleInfo: { height: "98vh", width: "100%" },
      config: config,
      spreadOptions: {
        sheetCount: 2
      },
      designer: null,
      spread: null
    };
  },
  methods: {
    designerInitialized(value) {
      this.designer = value;
      this.spread = this.designer.getWorkbook();
      // this.registerCommand();
      // this.customContextMenu();
    },
    registerCommand() {
      const myCmd = {
        canUndo: true,
        name: "myCmd",
        execute: (context, options, isUndo) => {
          alert("add_table_command");
        }
      };
      this.spread.commandManager().register("myCmd", myCmd);
    },
    customContextMenu() {
      function MyContextMenu() {}
      MyContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu();
      MyContextMenu.prototype.onOpenMenu = function(
        menuData,
        itemsDataForShown,
        hitInfo
      ) {
        itemsDataForShown.push({
          text: "菜单测试",
          name: "myCmd",
          command: "myCmd",
          workArea: "viewport"
        });
      };
      const contextMenu = new MyContextMenu();
      this.spread.contextMenu = contextMenu;
    }
  }
};
</script>
<style></style>



demo.zip

137.28 KB, 下载次数: 144

最佳答案

查看完整内容

可以是可以,但是会导致你现在碰到的情况,你要想保留designer原有的菜单结构,就得改成designer自定义右键的写法 下面是spread和designer初始的右键菜单: spread: designer:

6 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-17 15:03:32
7#
您说的“三级菜单”是您自己实现的菜单吗?如果是您自己实现的菜单的话需要您那边自行去适配,我们这边只能适配Designer原生的右键菜单。
回复 使用道具 举报
snowflakes7
注册会员   /  发表于:2023-8-17 13:40:05
6#
本帖最后由 snowflakes7 于 2023-8-17 13:47 编辑

你好,了解到组件版的右键菜单是不支持三级菜单的,所以通过spread重写onOpenmenu的方式来创建右键三级菜单,但是又要使用原菜单中的部分按钮如 ‘定义名称’、‘标签’,这个怎么写才能让自定义的菜单和 ‘定义名称’、‘标签’按钮同时展示在右键菜单上。
1692242855924_984F9B9B-A3F7-46d9-82C4-6276C23183BC.png554306640.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-15 11:19:07
5#
正如楼上热心用户所述,Spread的右键菜单与Designer的右键菜单是不一样的,重写方法也不一样,所以请使用Designer的右键菜单重写方法来重写。
回复 使用道具 举报
snowflakes7
注册会员   /  发表于:2023-8-15 09:01:55
3#
陈皮 发表于 2023-8-15 08:30
你这是spread的写法,设计器designer自定义右键菜单的写法和spread不同

可以参考这个demo:

spread写法无法实现这个功能吗
回复 使用道具 举报
陈皮
中级会员   /  发表于:2023-8-15 08:30:36
2#
你这是spread的写法,设计器designer自定义右键菜单的写法和spread不同

可以参考这个demo:
设计器右键插入多行 - JS CodeMine (grapecity.com)
回复 使用道具 举报
最佳答案
最佳答案
陈皮
中级会员   /  发表于:2023-8-14 18:14:26
来自 4#
本帖最后由 陈皮 于 2023-8-15 10:16 编辑
snowflakes7 发表于 2023-8-15 09:01
spread写法无法实现这个功能吗

可以是可以,但是会导致你现在碰到的情况,你要想保留designer原有的菜单结构,就得改成designer自定义右键的写法

下面是spread和designer初始的右键菜单:
spread:
image.png122390135.png
designer:
image.png876642761.png

评分

参与人数 1金币 +666 收起 理由
Joestar.Xu + 666 神马都是浮云

查看全部评分

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