找回密码
 立即注册

QQ登录

只需一步,快速开始

ArnoldH

注册会员

5

主题

17

帖子

48

积分

注册会员

积分
48
ArnoldH
注册会员   /  发表于:2020-11-9 14:13  /   查看:3274  /  回复:8
var activeSheet = spread.getActiveSheet();
                        
activeSheet.suspendPaint();  
                                                 
var style = new GC.Spread.Sheets.Style();                        
style.cellButtons = [
       {   
           imageType: GC.Spread.Sheets.ButtonImageType.ellipsis,
            command: (sheet, row, col, option) => {e
              var cell = activeSheet.getCell(row,col);  
              alert(row + ":" + col + ", value:" + cell.value());                                
             }
            //command: "demoPopupFunc"
        }
];
activeSheet.setStyle(10, 2, style);


按照上面的代码进行设置之后,界面上的单元格中的按钮点击之后可以正常工作。但是将其导出成JSON字符串后,发现command部分的内容已经不存在了。请问怎么样才能让它导出成JSON字符串后再导入回来依然可以正常工作?


8 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-9 14:37:04
沙发
问题收到,需要一定时间先复现您的问题,预计下午给您回复
回复 使用道具 举报
ArnoldH
注册会员   /  发表于:2020-11-9 15:00:18
板凳
非常感谢!
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-9 15:14:26
地板
您好,导入ssjson后您需要对cellButtons 的command 重新注册,示例代码如下:
  1. var spread = GC.Spread.Sheets.findControl(document.getElementById('ss'));
  2.         var sheet = spread.getActiveSheet();
  3.         var style = sheet.getStyle(10,2);
  4.         style.cellButtons[0].command = function(sheet, row, col, option) {
  5.             var cell = sheet.getCell(row,col);  
  6.             alert(row + ":" + col + ", value:" + cell.value());  
  7.         }
复制代码


回复 使用道具 举报
ArnoldH
注册会员   /  发表于:2020-11-9 15:37:55
5#
我试试看,谢谢!
回复 使用道具 举报
ArnoldH
注册会员   /  发表于:2020-11-9 15:43:36
6#
spread.commandManager().register("showCellValue",...)
能否通过这种方式来实现? 这样的话我注册一个函数,然后设置:command:"showCellValue"就可以了? 我按照网上给的例子来试验过,但是不能正常工作,不知您能否指点一二?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-9 18:05:34
7#
您可以参考以下代码:
  1. // 注册命令
  2.         var command = {
  3.             canUndo: true,
  4.             execute: function (context, options, isUndo) {
  5.                 console.log(options);
  6.                 var row = options.row;
  7.                 var col = options.col;
  8.                 var cell = sheet.getCell(row,col);  
  9.                 alert(row + ":" + col + ", value:" + cell.value());  
  10.             }
  11.         }
  12.         var commandManager = spread.commandManager();
  13.         commandManager.register("buttons", command);
  14.         //样式
  15.         var style = new GC.Spread.Sheets.Style();
  16.         style.cellButtons = [
  17.             {   
  18.                 imageType: GC.Spread.Sheets.ButtonImageType.ellipsis,
  19.                 command: "buttons"
  20.             }
  21.         ];
  22.         sheet.setStyle(10, 2, style);
复制代码
导出ssjson再次导入时,需要重新注册此命令
  1. var command = {
  2.             canUndo: true,
  3.             execute: function (context, options, isUndo) {
  4.                 console.log(options);
  5.                 var row = options.row;
  6.                 var col = options.col;
  7.                 var cell = sheet.getCell(row,col);  
  8.                 alert(row + ":" + col + ", value:" + cell.value());  
  9.             }
  10.         }
  11.         var commandManager = spread.commandManager();
  12.         commandManager.register("buttons", command);
复制代码


回复 使用道具 举报
ArnoldH
注册会员   /  发表于:2020-11-9 21:28:54
8#
我试试,非常感谢!
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-10 10:15:12
9#
好的,有问题的话可以追问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部