SpreadJS 自定义右键菜单-在选择行下面插入行
本帖最后由 Lynn.Dou 于 2022-6-30 14:19 编辑使用SpreadJS产品的小伙伴可能会注意到,sheet插入行时会在选中行的上面新增一行,这个行为也是与Excel保持一致的。
不过对于一些行业的小伙伴来说,在下方插入行更满足他们的需求。SpreadJS虽然没有直接提供在下方插入行的API,不过可以通过重写右键菜单插入行选项来实现这个需求。
接下来我们结合附件的demo来带领大家共同来实现这个功能。
1、自定义右键菜单大家可以参考这两篇技术博客,这里就不重复介绍了。
https://www.grapecity.com.cn/blo ... ht-click-menu-part1
https://www.grapecity.com.cn/blo ... ht-click-menu-part2
2、首先来定义向下插入行的命令,在execute 添加我们想执行的方法,在本例就是 在选中行下方插入行的方法。
我们已经知道,SpreadJS默认就是在选中行的上一行插入的,所以实现思路就是从选中行的下一行 开始插入指定行数。
听着有点绕,参考下方代码就容易理解了。var insertRowsBelow = {
canUndo: true,
name: "insertRowsBelow",
execute: function (context, options, isUndo) {
var Commands = GC.Spread.Sheets.Commands;
if (isUndo) {
Commands.undoTransaction(context, options);
return true;
} else {
Commands.startTransaction(context, options);
var sheet = context.getSheetFromName(options.sheetName);
sheet.suspendPaint();
console.log(options.selections)
//向下插入行
if (options.selections && options.selections.length) {
var row = options.selections.row + 1;
var rowCount = options.selections.rowCount;
sheet.addRows(row, rowCount);
}
sheet.resumePaint();
Commands.endTransaction(context, options);
return true;
}
}
};
3、注册该命令
spread.commandManager().register("insertRowsBelow", insertRowsBelow);4、替换原有的插入命令
function MyContextMenu() {}
MyContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
MyContextMenu.prototype.onOpenMenu = function (menuData, itemsDataForShown, hitInfo, spread) {
itemsDataForShown.forEach(function (item, index) {
if (item && item.name === "gc.spread.insertRows") {
item.command = "insertRowsBelow"
}
});
};
var contextMenu = new MyContextMenu();
spread.contextMenu = contextMenu;现在就实现了向下插入行的需求了,如下图:
完整代码可参考附件demo。
关联贴:SpreadJS 解决右键向下插入行时汇总公式无效的问题
请问下这个向下插入怎么不覆盖原来的插入,纯新增 可以添加一个右键菜单选项即可,添加菜单可以参考
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/worksheet/context-menu/extend-context-menu/purejs 我想请问下如何向这个方法里面传递参数execute 李樱 发表于 2023-2-10 16:42
我想请问下如何向这个方法里面传递参数execute
在此帖中已进行回复。请尽量避免重复发帖,您发的问题这边都会处理的。https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=54576
页:
[1]