这是因为autoFitColumn是一个较老的API了,之前我们也发现了,但是如果现在更改这个API会造成老用户的一些使用习惯以及代码兼容性,因此目前没有办法可以去判断自适应列高是否是代码操作,只能通过重写autoFitColumn指令来判断,您在代码进行自适应操作时给参数传一个布尔值flag,然后在excute方法中去获取这个flag来判断是否是代码操作
- var autoFitColumnCommand = {
- canUndo: true,
- execute: function (spread, options, isUndo) {
- var Commands = GC.Spread.Sheets.Commands;
- if (isUndo) {
- Commands.undoTransaction(spread, options);
- return true;
- } else {
- Commands.startTransaction(spread, options);
- if (options.flag) {
- console.log("代码操作")
- } else {
- console.log("UI操作")
- }
- GC.Spread.Sheets.Commands.autoFitColumn.execute(spread, options, isUndo)
- Commands.endTransaction(spread, options);
- return true;
- }
- }
- };
- var commandManager = spread.commandManager();
- commandManager.register('autoFitColumn', autoFitColumnCommand);
- commandManager.execute({ cmd: "autoFitColumn", sheetName: "Sheet1", columns: [{ column: 0 }], isRowHeader: false, autoFitType: GC.Spread.Sheets.AutoFitType.cell, flag: true });
复制代码
附件是按照这个思路实现的一个demo,您可以参考一下
|
|