找回密码
 立即注册

QQ登录

只需一步,快速开始

文乐
注册会员   /  发表于:2022-1-11 16:30  /   查看:1424  /  回复:5
1金币
想要在监听 新建sheet事件的回调函数里 设置指定列宽,代码如下:_this.spread.bind(GC.Spread.Sheets.Events.SheetChanged, function(
            e,
            args
          ) {
            // console.log('SheetChanged')
            if (args.propertyName == 'insertSheet') {
              let sheet = _this.spread.getSheet(args.sheetIndex)


              sheet.setColumnWidth(4, "2*");
              sheet.setColumnWidth(6, "2*");
            }
          })




但是新建sheet后不生效

最佳答案

查看完整内容

抱歉我没有解释清楚,目前按照比例显示的话,效果是可以让可视区域按照比例显示,你设置了50列,那么这50列都需要设置比例,或者固定值,你只设置了4,6列,肯定没办法确定这两列和其他列的比例关系 一般都是用于比较少的列这样设置,比如说5列,前四列按比例,最后一列设置为固定值40,这样设置就可以

5 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-11 16:30:04
来自 4#
抱歉我没有解释清楚,目前按照比例显示的话,效果是可以让可视区域按照比例显示,你设置了50列,那么这50列都需要设置比例,或者固定值,你只设置了4,6列,肯定没办法确定这两列和其他列的比例关系

一般都是用于比较少的列这样设置,比如说5列,前四列按比例,最后一列设置为固定值40,这样设置就可以

  1.             if (args.propertyName == 'insertSheet') {
  2.               let sheet = spread.getSheet(args.sheetIndex)
  3.               sheet.setColumnCount(5)
  4.               sheet.setRowCount(100)
  5.               
  6.               
  7.               sheet.setColumnWidth(0, "1*");
  8.               sheet.setColumnWidth(1, "2*");
  9.               sheet.setColumnWidth(2, "3*");
  10.               sheet.setColumnWidth(3, "4*");
  11.               sheet.setColumnWidth(4, "400");
  12.             }
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-11 18:08:59
2#
通过setColumnWidth来设置列宽为比例时,需要先设置列数,这样按比例设置的列宽才能生效
比如你这个一共有8列的话,先设置
  1. sheet.setColumnCount(4, GC.Spread.Sheets.SheetArea.viewport);
复制代码


参考
https://demo.grapecity.com.cn/sp ... ksheet/dynamic-size
回复 使用道具 举报
文乐
注册会员   /  发表于:2022-1-12 11:13:56
3#
Richard.Ma 发表于 2022-1-11 18:08
通过setColumnWidth来设置列宽为比例时,需要先设置列数,这样按比例设置的列宽才能生效
比如你这个一共有 ...

_this.spread.bind(GC.Spread.Sheets.Events.SheetChanged, function(
            e,
            args
          ) {
            // console.log('SheetChanged')
            if (args.propertyName == 'insertSheet') {
              let sheet = _this.spread.getSheet(args.sheetIndex)
              sheet.setColumnCount(50)
              sheet.setRowCount(100)
              
              debugger
              sheet.setColumnWidth(4, "2*");
              sheet.setColumnWidth(6, "2*");
            }
          })

这样设置了,还是不生效。
发现debugger的时候,可以看到 设置宽度是生效的,但是调试结束后,所有列宽就都恢复成默认的宽度了
回复 使用道具 举报
文乐
注册会员   /  发表于:2022-1-17 13:47:39
5#
Richard.Ma 发表于 2022-1-12 14:07
抱歉我没有解释清楚,目前按照比例显示的话,效果是可以让可视区域按照比例显示,你设置了50列,那么这50列 ...

好的,我这边清楚了,谢谢您!
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-17 13:59:51
6#
文乐 发表于 2022-1-17 13:47
好的,我这边清楚了,谢谢您!

那这边就先结贴啦,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部