0

我尝试使用以下自定义粘贴功能仅粘贴值,但它不会触发更改事件,以便我将数据同步到数据源。

道场演示链接

...
change: onExcelChange,
paste: function(e) {
            e.preventDefault()

            var currentRange = e.range;
            var fullData = e.clipboardContent.data;
            var mergedCells = e.clipboardContent.mergedCells;
            var topLeft = currentRange.topLeft();
            var initialRow = topLeft.row;
            var initialCol = topLeft.col;
            var origRef = e.clipboardContent.origRef;
            var numberOfRows = origRef.bottomRight.row - origRef.topLeft.row + 1;
            var numberOfCols = origRef.bottomRight.col - origRef.topLeft.col + 1;
            var spread = e.sender;
            var sheet = spread.activeSheet();
            var rangeToPaste =  sheet.range(initialRow, initialCol, numberOfRows, numberOfCols);

            sheet.batch(function() {
                for(var i = 0; i < fullData.length; i += 1) {
                    var currentFullData = fullData[i];

                    for(var j = 0; j < currentFullData.length; j += 1 ) {
                        var range = sheet.range(initialRow + i, initialCol + j);
                        var value = currentFullData[j].value;

                        if (value !== null) {
                            range.input(value);
                            range.format(null);
                        }
                    }
                }
                 sheet.select(rangeToPaste);
            }, { layout: true, recalc: true });        
        } ...

我曾尝试在 sheet.batch 中使用 recalc: true 来触发更改,但无济于事。任何帮助将不胜感激。

4

1 回答 1

1

所有 Kendo 小部件都继承自 Observable,它有一个触发方法:

var obj = new kendo.Observable();
obj.bind("myevent", function(e) {
    console.log(e.data); // outputs "data"
});
obj.trigger("myevent", { data: "data" });

您需要使用正确的参数手动触发电子表格的更改事件。

于 2020-06-09T10:51:32.443 回答