找回密码
 立即注册

QQ登录

只需一步,快速开始

HDXXH

金牌服务用户

39

主题

96

帖子

555

积分

金牌服务用户

积分
555
HDXXH
金牌服务用户   /  发表于:2021-2-19 16:20  /   查看:2948  /  回复:7
  1. let designerConfig = JSON.parse(JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig));
  2. let CommandNames = GC.Spread.Sheets.Designer.getCommand();
  3. let MergeCenter = CommandNames.mergeCenter;
  4.       let oldExecuteMergeCenter = MergeCenter.execute;
  5. MergeCenter.execute = function(context, propertyName) {
  6.         let __this = this
  7.         _this.$confirm(`是否确认合并?`, '提示', {
  8.           confirmButtonText: '确认',
  9.           cancelButtonText: '取消',
  10.           type: 'warning',
  11.           closeOnPressEscape: false,
  12.           closeOnClickModal: false
  13.         }).then(() => {
  14.           console.log(222);
  15.           oldExecuteMergeCenter.call(__this, context, propertyName);
  16.         }).catch(() => {
  17.         });
  18.         console.log(111);
  19.       };
  20.       designerConfig.commandMap['mergeCenter'] = MergeCenter;
  21.       const designer = new GC.Spread.Sheets.Designer.Designer(document.getElementById('gc-designer-container'), designerConfig);
复制代码
通过上面方式重定义命令没有生效,帮忙看下什么原因

7 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-19 16:38:16
沙发
本帖最后由 DerrickJiao 于 2021-2-19 16:42 编辑

您可以参考下面的代码实现 image.png768633422.png
  1. let designerConfig = JSON.parse(JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig));
复制代码
  1. let MergeCenter = GC.Spread.Sheets.Designer.getCommand("mergeCenter");
复制代码
  1. let oldExecuteMergeCenter = MergeCenter.execute;
复制代码

MergeCenter.execute = function(context, propertyName) {
       alert("我是合并");oldExecute.call(this, context, propertyName);
      };

designerConfig.commandMap = {'mergeCenter': MergeCenter}
var designer = GC.Spread.Sheets.Designer.findControl('gc-designer-container');
designer.setConfig(designerConfig)
回复 使用道具 举报
HDXXH
金牌服务用户   /  发表于:2021-2-19 17:03:48
板凳
还是不行,alert弹窗可以出来  但是oldExecuteMergeCenter.call(this, context, propertyName) 没有执行
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-19 17:36:09
地板
本帖最后由 DerrickJiao 于 2021-2-19 17:39 编辑
HDXXH 发表于 2021-2-19 17:03
还是不行,alert弹窗可以出来  但是oldExecuteMergeCenter.call(this, context, propertyName) 没有执行

抱歉,里面少写了一个参数,将其改为下面的代码即可
  1. MergeCenter.execute = function(context, propertyName, args) {
  2.        alert("我是合并");oldExecuteMergeCenter.call(this, context, propertyName, args);
  3.       };
复制代码
1613727541.jpg
回复 使用道具 举报
HDXXH
金牌服务用户   /  发表于:2021-2-19 18:28:39
5#
直接点击合并后居中可以了
但是下拉的另外几个好像还是不行
image.png793830566.png
我是用下面的方法获取的  其他代码都是一样的
  1. let MergeCenter = GC.Spread.Sheets.Designer.getCommand('mergeCenter');
  2.       let MergeAcross = GC.Spread.Sheets.Designer.getCommand('mergeAcross');
复制代码


回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-20 08:56:32
6#
HDXXH 发表于 2021-2-19 18:28
直接点击合并后居中可以了
但是下拉的另外几个好像还是不行

这个下拉菜单对应的是这几个命令,您需要参照上面的方法修改下面的命令
image.png592706603.png
回复 使用道具 举报
HDXXH
金牌服务用户   /  发表于:2021-2-20 10:02:36
7#
我是按上面的方式写的 但是连console都没打印出来
  1. let MergeAcross = GC.Spread.Sheets.Designer.getCommand('mergeAcross');
  2.       let oldExecuteMergeAcross = MergeAcross.execute;
  3.       MergeAcross.execute = (context, propertyName, args) => {
  4.         console.log(1234567);
  5.       };
  6.       designerConfig.commandMap['mergeAcross'] = MergeAcross;
复制代码


回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-20 11:56:45
8#
HDXXH 发表于 2021-2-20 10:02
我是按上面的方式写的 但是连console都没打印出来

您需要参考以下代码实现,因为这是一个下拉列表命令,与直接点击的命令不同 image.png855010681.png
var designerConfig = JSON.parse(JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig))
designerConfig.commandMap = {}
let MergeAcross = GC.Spread.Sheets.Designer.getCommand("mergeAcross");
    let newExecuteMergeCenter = MergeAcross.execute;
    MergeAcross.execute = function(context, propertyName) {
        alert("我是合并");
        newExecuteMergeCenter.call(this, context, propertyName);
    };


let NewList = GC.Spread.Sheets.Designer.getCommand("alignmentMergeList");
NewList.subCommands[1].commandName = "newMergeAcross";
designerConfig.commandMap[GC.Spread.Sheets.Designer.CommandNames.AlignmentMergeList] = NewList;
designerConfig.commandMap[GC.Spread.Sheets.Designer.CommandNames.MergeAcross] = MergeAcross;

var designer = GC.Spread.Sheets.Designer.findControl('gc-designer-container');
designer.setConfig(designerConfig)

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