找回密码
 立即注册

QQ登录

只需一步,快速开始

xiaospider

注册会员

7

主题

14

帖子

57

积分

注册会员

积分
57
xiaospider
注册会员   /  发表于:2018-3-14 15:12  /   查看:3970  /  回复:2
使用spread.toJSON保存JSON后用spread.fromJSON 读取不了了。 错误如下:

TypeError: h.paint is not a function
[详细了解]
gc.spread.sheets.all.10.2.0.min.js:37:18030
TypeError: a.isImeAware is not a function
[详细了解]
gc.spread.sheets.all.10.2.0.min.js:36:22185
TypeError: h.paint is not a function
[详细了解]
gc.spread.sheets.all.10.2.0.min.js:37:18030
TypeError: j.h5 is not a function
[详细了解]

数据请看附件

test1.zip

109.31 KB, 下载次数: 287

json数据文件

2 个回复

倒序浏览
xiaospider
注册会员   /  发表于:2018-3-14 15:43:31
沙发
我发现时我自定义了一个cellType

function NumberCellType(){

}
//console.log('CellTypes: ',spreadNS.CellTypes);
NumberCellType.prototype = new spreadNS.CellTypes.Text();

NumberCellType.prototype.createEditorElement = function(context) {
   //Creates a DOM element then returns it.

   var editor = spreadNS.CellTypes.Text.prototype.createEditorElement.call(this, context);
   //console.log('editor',this, editor , context);
   var textarea = editor;
   //textarea.setAttribute("onkeydown", "valideInput()");
   var removeNoNumber = function(){
           var textarea = this;
           var value = textarea.value
           if(value && value.length && !$.isNumeric(value)){
                   textarea.value = '';
           }
   }
   textarea.onkeydown = removeNoNumber;
   textarea.onkeyup = removeNoNumber;
   textarea.onchange = removeNoNumber;
   return editor;

};

NumberCellType.prototype.max = function(context) {
}

NumberCellType.prototype.min = function(context) {
}

然后设置某个单元格我自定义的CellType
sheet.setCellType(sel.row + r, sel.col + c, cellType, spreadNS.SheetArea.viewport);

然后toJSON之后,我自定义的单元格的json为
"6" : {
                                                                                "value" : "111",
                                                                                "style" : {
                                                                                        "autoFormatter" : {},
                                                                                        "cellType" : {
                                                                                                "b5" : {},
                                                                                                "c5" : {},
                                                                                                "jK" : null
                                                                                        }
                                                                                }
                                                                        }

在spread.fromJSON的时候就会出错

请问我的自定义cellType应该怎么改才能toJSON, fromJSON
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-3-14 16:03:09
板凳
您好:

自定义单元格序列化请参考:
http://demo.gcpowertools.com.cn/ ... customItemSerialize
需要设置一个typeName,另外您导入的时候自定义的相关代码(也就是NumberCellType的相关声明)必须在作用域中存在。
不然按照Spread按照typeName去找,也找不到相关的实现的代码,这样也会有问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部