找回密码
 立即注册

QQ登录

只需一步,快速开始

dawning

注册会员

6

主题

8

帖子

36

积分

注册会员

积分
36
  • 136

    金币

  • 6

    主题

  • 8

    帖子

dawning
注册会员   /  发表于:2022-8-29 11:34  /   查看:1714  /  回复:1
1金币
function NumberCellType(numType, spread) {

    debugger;
    this.spread = spread;
    var self = this;
    this.numType = SetNumType(numType);

    function SetNumType(numType) {
        debugger;
        if (numType.FormatText) {
            var num = numType.FormatText;
            var x = String(num).indexOf(".") + 1;//得到小数点的位置
            var y = String(num).length - x;//小数点的位数
            numType.DecimalPlaces = y;
        }
        return numType
    }
}

NumberCellType.prototype = new GC.Spread.Sheets.CellTypes.Base();
/**
* 创建一个input输入框
* @returns {HTMLInputElement}
*/
NumberCellType.prototype.createEditorElement = function (sheet) {
    var input = document.createElement("input");
    input.setAttribute('data-col', sheet.col);
    input.setAttribute('data-row', sheet.row);
    return input;
};
/**
* 初始化事件
* @param editorContext
* @param cellStyle
* @param cellRect
*/
NumberCellType.prototype.activateEditor = function (editorContext, cellStyle, cellRect) {
    var self = this;
    //Initialize input editor.
    if (editorContext) {
        var $editor = $(editorContext);
        GC.Spread.Sheets.CellTypes.Base.prototype.activateEditor.apply(this, arguments);
        $editor.css("position", "absolute");
        var numType = this.numType;
        $editor.on('input change', function (e) { //对输入的值进行搜索
            var value = $editor.val();
            var aNew = value;
            var DecimalPlaces = numType.DecimalPlaces
            var re1 = /[^(\d.)+/g;
            var re2 = /(?<=\..*?|^)\./g
            var re3 = new RegExp("([0-9]+\.[0-9]{" + DecimalPlaces + "})[0-9]*");
            re1.test("ssss");
            aNew = aNew.replace(re1, "");
            aNew = aNew.replace(re2, "");
            aNew = aNew.replace(re3, "$1");
            $editor.val(aNew)
        });


    }
}
/**
* 隐藏提示框
* @param editorContext
*/
NumberCellType.prototype.deactivateEditor = function (editorContext) {
    //Remove input editor when end editor status.
    if (editorContext) {

    }
    GC.Spread.Sheets.CellTypes.Base.prototype.deactivateEditor.apply(this, arguments)
};
NumberCellType.prototype.setEditorValue = function (editor, value) {
    if (value) {
        $(editor).val(value);
    }
};
NumberCellType.prototype.getEditorValue = function (editor) {
    var $editor = $(editor);
    var value = $editor.val();
    return value;
};
NumberCellType.prototype.updateEditor = function (editorContext, cellStyle, cellRect) {
    if (editorContext) {
        var $editor = $(editorContext);
        $editor.css("width", cellRect.width);
        $editor.css("height", cellRect.height);
    }
}



最佳答案

查看完整内容

您好,自定义单元格想实现复制粘贴,需要对其自定义特性序列化,即在指定位置设置上typeName。 具体可参考下方链接文章: https://gcdn.grapecity.com.cn/showtopic-95885-1-12.html 自定义单元格与普通单元格不同,其显示的text是由自定义单元格函数内部逻辑返回的,所以不能直接使用SJS内置的格式。 需要根据您的格式需求自己在自定义单元格函数中内部处理,并进行返回。

1 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-29 11:34:59
来自 2#
您好,自定义单元格想实现复制粘贴,需要对其自定义特性序列化,即在指定位置设置上typeName。
具体可参考下方链接文章:
https://gcdn.grapecity.com.cn/showtopic-95885-1-12.html
自定义单元格与普通单元格不同,其显示的text是由自定义单元格函数内部逻辑返回的,所以不能直接使用SJS内置的格式。
需要根据您的格式需求自己在自定义单元格函数中内部处理,并进行返回。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部