请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

冥冥中明明是你

注册会员

15

主题

62

帖子

179

积分

注册会员

积分
179
冥冥中明明是你
注册会员   /  发表于:2022-7-1 16:58  /   查看:2711  /  回复:7
5金币
本帖最后由 冥冥中明明是你 于 2022-7-1 17:14 编辑

在启用了拆分调整大小之后,双击列标题分割线时又还原了列宽,请问能禁用该双击事件吗,或者有没有其他的方法能实现所有字段始终占满表格宽度的效果?spread.options.columnResizeMode = GC.Spread.Sheets.ResizeMode.split;
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

双击或者拖拽都可以改变列宽,所以均可以触发ColumnWidthChanging事件, 在事件内部您可以根据实际业务(比如判断如果是第二列)需要做判断,如果不希望列宽改变,则执行cancel为true,即取消列宽改变的行为。 API链接: https://demo.grapecity.com.cn/sp ... ColumnWidthChanging 需注意,目前事件内没有属性可以区分是拖拽还是双击改变列宽行为,但是双击的时候是执行了autoFitColumn这个命令,你可以通过重写这个命令来 ...

7 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-1 16:58:51
来自 6#
本帖最后由 Lynn.Dou 于 2022-7-4 18:33 编辑

双击或者拖拽都可以改变列宽,所以均可以触发ColumnWidthChanging事件,
在事件内部您可以根据实际业务(比如判断如果是第二列)需要做判断,如果不希望列宽改变,则执行cancel为true,即取消列宽改变的行为。
API链接:
https://demo.grapecity.com.cn/sp ... ColumnWidthChanging

需注意,目前事件内没有属性可以区分是拖拽还是双击改变列宽行为,但是双击的时候是执行了autoFitColumn这个命令,你可以通过重写这个命令来标记此行为。
  1.      var oldAutoFitColumn = GC.Spread.Sheets.Commands.autoFitColumn.execute;
  2.         GC.Spread.Sheets.Commands.autoFitColumn.execute = function(context,options,isUndo){
  3.                 var Commands = GC.Spread.Sheets.Commands;
  4.                 if (isUndo) {
  5.                     Commands.undoTransaction(context, options);
  6.                     return true;
  7.                 } else {
  8.                     Commands.startTransaction(context, options);
  9.                     sheet.suspendPaint();
  10.                     console.log('autoFitColumn');
  11.                     var a = oldAutoFitColumn.call(this, context,options,isUndo);
  12.                     sheet.resumePaint();

  13.                     Commands.endTransaction(context, options);
  14.                     return true;
  15.                 }
  16.             }
复制代码



"有没有其他的方法能实现所有字段始终占满表格宽度的效果?"
您指的是根据单元格实际文本内容自适应列宽吗?可以参考下方链接demo:
https://demo.grapecity.com.cn/sp ... les/index.html?id=9

回复 使用道具 举报
ann悬赏达人认证
初级会员   /  发表于:2022-7-1 17:49:57
2#
您好,可以试试取消列宽更新事件,看是否满足需求
sheet.bind(GC.Spread.Sheets.Events.ColumnWidthChanging, function (e, info) {
        info.cancel = true;
});
回复 使用道具 举报
冥冥中明明是你
注册会员   /  发表于:2022-7-1 18:07:24
3#
ann 发表于 2022-7-1 17:49
您好,可以试试取消列宽更新事件,看是否满足需求
sheet.bind(GC.Spread.Sheets.Events.ColumnWidthChangi ...

不行,这个是禁用了调整列宽的功能,我需要的是保留可以拖动改变列宽的功能
回复 使用道具 举报
AlexZ讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-1 18:21:06
4#
可以通过监听事件:
GC.Spread.Sheets.Events.ColumnWidthChanging

并确定是否需要取消
回复 使用道具 举报
冥冥中明明是你
注册会员   /  发表于:2022-7-4 09:39:44
5#
AlexZ 发表于 2022-7-1 18:21
可以通过监听事件:
GC.Spread.Sheets.Events.ColumnWidthChanging

双击改变事件和拖动改变事件有什么区别吗,或者说哪个条件可以用来作为判断条件?判断是否取消
回复 使用道具 举报
冥冥中明明是你
注册会员   /  发表于:2022-7-5 10:19:35
7#
Lynn.Dou 发表于 2022-7-4 18:06
双击或者拖拽都可以改变列宽,所以均可以触发ColumnWidthChanging事件,
在事件内部您可以根据实际业务( ...

好的,谢谢了,结贴吧
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-5 11:47:53
8#
那本帖就先结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部