Handsontable无法固定列宽问题求助
Handsontable无法固定列宽问题求助
嗨,我看你在做一个和短信服务相关的JSP Web应用,用Handsontable做数据网格的时候遇到了列宽被长文本撑大的问题,我之前也碰到过类似的情况,给你几个可行的解决办法试试:
正确配置文本换行与溢出处理
你之前尝试设置wordWrap: false但没起效,大概率是配置的方式不对。其实我们需要开启wordWrap,同时配合单元格的溢出样式来固定列宽。你可以修改你的Handsontable配置,添加自定义单元格渲染器来控制文本显示:var data = [ [ "", "" ], [ "", "" ], [ "", "" ], [ "", "" ],[ "", "" ], [ "", "" ], [ "", "" ], [ "", "" ], [ "", "" ],[ "", "" ], [ "", "" ] ]; console.log("Data: " + data); $("#dataTable").handsontable({ data : data, manualRowMove: true, startRows : 6, startCols : 2, // 这里建议改成2,和你的实际列数匹配,避免多余列干扰 width: '100%', height : 'auto', minSpareRows : 2, rowHeaders : true, maxRows: 50, colHeaders : [ 'Mensaje', 'Número' ], colWidths: [150, 150], manualColumnResize: true, wordWrap: true, // 自定义单元格渲染器,控制文本溢出显示 cell: function(row, col) { var props = {}; if (col === 0) { // 针对短信内容列设置 props.renderer = function(instance, td) { Handsontable.renderers.TextRenderer.apply(this, arguments); td.style.whiteSpace = 'nowrap'; td.style.overflow = 'hidden'; td.style.textOverflow = 'ellipsis'; // 超出显示省略号,也可以用hidden直接隐藏 }; } return props; } });添加CSS强制固定列宽
有时候页面的全局CSS会干扰Handsontable的默认样式,你可以给表格加个自定义样式,强制限制单元格宽度:#dataTable .htCore td { max-width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }检查多余列配置
你代码里设置了startCols: 8,但实际只需要2列(短信内容和号码),多余的列可能会导致布局计算异常,建议把startCols改成2,和你的列头数量对应。
先试试上面的第一种方案,调整配置后应该就能固定列宽,不会被长文本撑大了。如果还有问题,可以排查下页面有没有其他CSS样式影响了表格单元格的宽度。
备注:内容来源于stack exchange,提问作者LianoMG




