V15 outlineColumn自动折行问题
本帖最后由 Wilson.Zhang 于 2024-10-28 17:15 编辑产品:SpreadJS
版本:15.0.0
调研编号:SJS-26624
Last Review:2024-10-28
当前进展:已在17.1.8版本修复。
v15版本,首列包括showCheckBox,showIndicator及名称,有些行可能名称长度不够未折行。如下图
手动将行高拉高后未显示的字符串才显示出来 如下图:
有些行可以正常自动折行,有些行出现上面这种情况,感觉好象字符串长度达不到折行需要。
什么原因造成这种情况?有解决办法吗?
您好!您试下wordWrap自动换行。 整列设置的都是wordWrap,并且每行设置了自动行高:sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.autoFitRow(index);
只是有些行有这种问题 本帖最后由 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);
数据显示出来。
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);
数据显示出来。
pele 发表于 2024-9-25 14:29
因为使用了文本缩进、分组列:
sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.getCell(index, 0).tex ...
对单元格设置了自动换行后,填充长字符串将根据单元格当前宽度进行自动换行,但输入完成后并不能看到换行效果,唯有对单元格再设置自适应高度方能看到换行后的效果。简言之,要想让单元格的换行效果可视,需要在此基础上自适应调整行高。如下动图所示。
从您提供的代码中了解到,index应该是分组列的索引吧,那么,对index自适应行高是否有对所有行都设置呢?您需要检查下这个。
pele 发表于 2024-9-25 15:20
因为使用了文本缩进、分组列:
sheet.getRange(-1,0,-1,1).wordWrap(true);
sheet.getCell(index, 0).t ...
Worksheet:wutoFitRow()只需要一个参数,即待自适应调整行高的行索引,如下图所示。
Worksheet:setRowHeight()可指定待调整行高的行索引和行高值,如下图所示。
可以参考官网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
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
}); 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);
第二行行高未自适应。其实数据已折行。
结果如下:
pele 发表于 2024-9-25 16:47
这是一段测试脚本
通过您提供的代码片段,我们复现了现象,并分析了代码中的设置。发现原因在于第二行数据(未能自动换行的数据行)的width为340。我们做了如下测试:
当取消每行的层级缩进,保留其他设置时,如下图所示,A2中单选框后接文本刚好占满单元格。
为A列单元格设置width为320,同时保留其他设置(包括层级缩进),如下图所示,A1单元格后接文本自动换行。
综上,需要调整A列单元格的width,令其小于单选框后接文本的总长度即可。
页:
[1]
2