我的目标是将第一列的宽度设置为等于某个数字,并留下其他列。宽度未受影响。现在我知道那个设置
colWidths: [myValue]
实际上打破了其他列'宽度,但这似乎是使用
可以解决的colWidths: function(index) {
if(index == 0)
return myValue;
return ???
}
但我想知道我应该在???
的地方返回什么? undefined
不起作用(好吧,它的工作方式与colWidths: [myValue]
相同 - 每个其他列都获得相同的默认宽度)。如何按内容获得"宽度"这个价值?
答案 0 :(得分:3)
为了以防万一,我会发布另一种我发现的方法(在GitHub上发布):
使用var autoColumnSize = handsontableInstance.getPlugin('autoColumnSize');
和autoColumnSize.calculateColumnsWidth(index, 0, true);
- 这一行计算行index
中列0
的必要宽度,使用Math.max
是另一种选择。这是一个实现 - 没有遍历所有行并寻找最大值,而是原则证明:http://jsfiddle.net/7u1kxjLe/39/
答案 1 :(得分:1)
使用选项 manualColumnResize 而不是 colWidths ,但方法与问题相同(仅定义第一列witdh):
manualColumnResize: [myValue]
第一列宽度将定义为您的值,其他列仍将是动态的。 (默认情况下, autoColumnSizeObject 设置为 true ,当您使用 colWidths 选项时,也会更改为 false )
您可以找到一个有效的例子here。
答案 2 :(得分:1)
我当前正在使用
modifyColWidth: function(width, col){
if(width > 300) return 300;
}
按列号引用也可以。
modifyColWidth: function(width, col){
if(col === 0) return 300;
}
编辑:HandsOnTable实例化后,您还需要此设置,否则您不能将宽度设置为超过300px。
colWidths = [];
[...Array(hot.countCols()).keys()].map(i => {
colWidths.push(hot.getColWidth(i));
});
hot.updateSettings({
modifyColWidth: ()=>{},
colWidths: colWidths
});