找回密码
 立即注册

QQ登录

只需一步,快速开始

pele

注册会员

6

主题

16

帖子

100

积分

注册会员

积分
100
pele
注册会员   /  发表于:2024-9-25 09:38  /   查看:148  /  回复:12
1金币
本帖最后由 Wilson.Zhang 于 2024-9-29 10:14 编辑

产品:SpreadJS
版本:15.0.0
调研编号:SJS-26624
Last Review:2024-09-29
当前进展:修复中。

v15版本,首列包括showCheckBox,showIndicator及名称,有些行可能名称长度不够未折行。如下图

image.png512673949.png
手动将行高拉高后未显示的字符串才显示出来 如下图:
image.png42387694.png
有些行可以正常自动折行,有些行出现上面这种情况,感觉好象字符串长度达不到折行需要。
什么原因造成这种情况?有解决办法吗?

image.png439348449.png
image.png307984923.png

12 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:7 天前
沙发
您好!您试下wordWrap自动换行。
回复 使用道具 举报
pele
注册会员   /  发表于:7 天前
板凳
整列设置的都是wordWrap,并且每行设置了自动行高:sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.autoFitRow(index);
只是有些行有这种问题
回复 使用道具 举报
pele
注册会员   /  发表于:7 天前
地板
本帖最后由 pele 于 2024-9-25 15:16 编辑

因为使用了文本缩进、分组列:
sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.getCell(index, 0).textIndent(level);
sheet.autoFitRow(index);
                sheet.outlineColumn.options({
                    columnIndex: 0,
                    showCheckBox: true,
                    showIndicator: true,
                    maxLevel: 3
                });
这种情况下有的行其实已折行,但是行高未改变。所以显示不全,只能手动调整行高才能将其他信息显示出来。
有什么好的处理办法或设置能解决这种问题吗?
sheet.autoFitRow(index);未起作用。

但设置如下:
sheet.autoFitRow(index,50);
数据显示出来。



回复 使用道具 举报
pele
注册会员   /  发表于:7 天前
5#
Wilson.Zhang 发表于 2024-9-25 12:17
您好!您试下wordWrap自动换行。

因为使用了文本缩进、分组列:
sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.getCell(index, 0).textIndent(level);
sheet.autoFitRow(index);
                sheet.outlineColumn.options({
                    columnIndex: 0,
                    showCheckBox: true,
                    showIndicator: true,
                    maxLevel: 3
                });
这种情况下有的行其实已折行,但是行高未改变。所以显示不全,只能手动调整行高才能将其他信息显示出来。
有什么好的处理办法或设置能解决这种问题吗?
sheet.autoFitRow(index);未起作用。
但设置如下:
sheet.autoFitRow(index,50);
数据显示出来。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
6#
pele 发表于 2024-9-25 14:29
因为使用了文本缩进、分组列:
sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.getCell(index, 0).tex ...

对单元格设置了自动换行后,填充长字符串将根据单元格当前宽度进行自动换行,但输入完成后并不能看到换行效果,唯有对单元格再设置自适应高度方能看到换行后的效果。简言之,要想让单元格的换行效果可视,需要在此基础上自适应调整行高。如下动图所示。
自动换行+自适应行高.gif

从您提供的代码中了解到,index应该是分组列的索引吧,那么,对index自适应行高是否有对所有行都设置呢?您需要检查下这个。

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
7#
pele 发表于 2024-9-25 15:20
因为使用了文本缩进、分组列:
sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.getCell(index, 0).t ...

Worksheet:wutoFitRow()只需要一个参数,即待自适应调整行高的行索引,如下图所示。

1727249293211.png514093932.png

Worksheet:setRowHeight()可指定待调整行高的行索引和行高值,如下图所示。
1727249345032.png936644592.png

可以参考官网API文档了解详情:
Worksheet:autoFitRow()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#autofitrow
Worksheet:setRowHeight()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Worksheet#setrowheight
回复 使用道具 举报
pele
注册会员   /  发表于:7 天前
8#
Wilson.Zhang 发表于 2024-9-25 15:25
对单元格设置了自动换行后,填充长字符串将根据单元格当前宽度进行自动换行,但输入完成后并不能看到换行 ...

谢谢回复!
以下为脚本:
第一列为名称,该设置的我认为都设置了。
sheet.setDataSource(dataSource);  
sheet.getRange(-1,0,-1,1).wordWrap(true);            
dataSource.forEach(function(value,index){
        sheet.getCell(index,0).wordWrap(true);
        sheet.autoFitRow(index);
        var level = value.level;
        sheet.getCell(index, 0).textIndent(level);
       
})
sheet.outlineColumn.options({
        columnIndex: 0,
        showCheckBox: true,
        showIndicator: true,
        maxLevel: 3
});
回复 使用道具 举报
pele
注册会员   /  发表于:7 天前
9#
Wilson.Zhang 发表于 2024-9-25 15:30
Worksheet:wutoFitRow()只需要一个参数,即待自适应调整行高的行索引,如下图所示。

这是一段测试脚本


workbook = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 1 });
workbook.options.tabStripVisible = false;
var spreadNS = GC.Spread.Sheets;
var sheet = workbook.getSheet(0);

var dataSource = [
        {mc:'一级','dm':'G',level:1},
        {mc:'中华人民共和国中华人民共和国中华人民共和国','dm':'GA',level:2},
        {mc:'中华人民共和国中华人民共和国中华人民共和国中华人民共和国','dm':'GA',level:2}
]
var columns = [
        {displayName : '项目名称',name : 'mc',width : 340,align : 'left'},
        {displayName : '项目代码',name : 'dm',width : 170,align : 'left'}
]
sheet.setDataSource(dataSource);
sheet.bindColumns(columns);
sheet.getRange(-1,0,-1,1).wordWrap(true);
dataSource.forEach(function(value,index) {
        var level = value.level;
        sheet.getCell(index, 0).textIndent(level);
        sheet.autoFitRow(index);
})
sheet.outlineColumn.options({
        columnIndex: 0,
        showCheckBox: true,
        showIndicator: true,
        maxLevel: 3
});
sheet.showRowOutline(false);

第二行行高未自适应。其实数据已折行。
结果如下:
image.png198041991.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
10#
pele 发表于 2024-9-25 16:47
这是一段测试脚本

通过您提供的代码片段,我们复现了现象,并分析了代码中的设置。发现原因在于第二行数据(未能自动换行的数据行)的width为340。我们做了如下测试:

当取消每行的层级缩进,保留其他设置时,如下图所示,A2中单选框后接文本刚好占满单元格。
1727257180534.png972687988.png

为A列单元格设置width为320,同时保留其他设置(包括层级缩进),如下图所示,A1单元格后接文本自动换行。
1727257180534.png747182616.png

综上,需要调整A列单元格的width,令其小于单选框后接文本的总长度即可。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部