找回密码
 立即注册

QQ登录

只需一步,快速开始

村东智叟
初级会员   /  发表于:2021-4-15 14:42  /   查看:2441  /  回复:7
本帖最后由 村东智叟 于 2021-4-15 14:57 编辑

你好:
我想咨询一下,关于AutoSizeCols()函数的问题
我的想法是这样的,网格的列设置有一个最大的宽度,
在调用AutoSizeCols()后,列会根据单元格的内容自动调整列宽。
如果调整后的列宽小于最大列宽的话,自动调整。
如果调整后的列宽大于最大列宽的话,只让列的宽度只有设置的最大列宽的大小。

实际开发的时候,即使设置了最大的列宽,初次加载的时候当数据超过最大列宽时。还是会显示数据的宽度,而不是最大的列宽。



请问这个问题怎么解决

7 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-15 15:57:56
沙发
可以在在AutoSizeCols后,在去循环判断一次列宽,如果列宽大于最大值,重新设置列宽即可
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-15 16:14:01
板凳
Richard.Ma 发表于 2021-4-15 15:57
可以在在AutoSizeCols后,在去循环判断一次列宽,如果列宽大于最大值,重新设置列宽即可

您好,非常感谢您的回复。
目前我就是采取的重新设置列宽的方式,初次加载的时候是没有效果的。
我目前是在一个网格中,点击某一行,会出现另一个网格。来显示信息。
初次点击没有效果,后面再次点击才会有效果。。。。。
我试了displaywidth 和 width两个属性,都不行。。。。。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-15 19:09:55
地板
收到,这个我会再验证一下然后给你回复一个结果
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-15 19:18:52
5#
Richard.Ma 发表于 2021-4-15 19:09
收到,这个我会再验证一下然后给你回复一个结果

我自己又调查了一下,大概产生的原因是这样的。
我用一个容器包裹着这个网格(grid)
当我这个容器的visible属性是false的时候也就是隐藏的时候,调用autosizecols()函数时
会无视最大的列宽。即使再后面重新设置列宽也不起作用。
但是当这个容器的visible属性为true的时候。也就是显示的时候。
重新设置列宽是有作用的

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-16 10:21:59
6#
如果是这样的话,说明autosizecols()取的是真实宽度。因此隐藏时没法获取到,我建议你可以上传一个demo上来,说明初次加载的时候是没有效果这个现象,我来看看有没有其他的办法
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-19 08:39:16
7#
Richard.Ma 发表于 2021-4-16 10:21
如果是这样的话,说明autosizecols()取的是真实宽度。因此隐藏时没法获取到,我建议你可以上传一个demo上来 ...

早上好。
感谢您的答复。
DEMO目前提供不了。因为是在远程机上进行开发。并没有拷贝的全限。并且只是整个项目的一个小模块。
我的调查结果是,隐藏的时候autosizecols()对列的设置是有效的。
但是在这之后再手动对列宽进行调整是没有效果的。
进行调试。autosizecols()之后可以通过width手动获取到列宽。
但是对这个列宽进行修改没有作用。虽然调试的时候获取的值是手动设置的值。但是实际显示的时候还是autosizecols()的列宽。
如果没有好的办法的话,可以关闭问题,我自己再研究一下。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-19 10:37:23
8#
主要是我现在需要重现你的问题,我这边测试是正常的,你也可以先自己研究一下,如果没有办法解决的话,还是发一个可以重现问题的demo上来我来帮你测试。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部