Primefaces,版本5.1。 请注意,是否有可能在不减小下一列宽度的情况下更改列宽,但可以通过移动其余列来实现。
说明:
有可撤销的列。
在调整第一列的大小时 - 第二列的宽度发生变化。
但是,需要移动其他列而不减小第二列的宽度(第二列和其他列的宽度不会改变,并且在增加列的宽度后也应该显示滚动)。
如果您知道如何解决此问题,请提供帮助
答案 0 :(得分:1)
我遇到了同样的问题。据我所研究,问题的根源在PrimeFaces的source datatable.js第2123行(here)中的方法“resize()”。
如果您查看PrimeFaces Showcase,可调整大小的列(datatable - resize),您将能够获得此方法,例如:带有PrimeFaces.widgets.widget_form_cars2.resize;
有了这些知识,我们可以尝试用我们自己的调整大小替换此方法,这不会改变nextColumnHeader
,nextColumn
和nextColumnFooter
。
例如,在(PrimeFaces Showcase page)上执行以下代码并使用第二个表格。
PrimeFaces.widgets.widget_form_cars2.resize = function(event, ui) {
var columnHeader;
var change = null;
var newWidth = null;
if (this.hasColumnGroup) {
var groupResizer = this.findGroupResizer(ui);
columnHeader = groupResizer.parent();
} else {
columnHeader = ui.helper.parent();
}
if (this.cfg.liveResize) {
change = columnHeader.outerWidth() - (event.pageX - columnHeader.offset().left);
newWidth = (columnHeader.width() - change);
} else {
change = (ui.position.left - ui.originalPosition.left);
newWidth = (columnHeader.width() + change);
}
if (newWidth > 15) {
columnHeader.width(newWidth);
var colIndex = columnHeader.index();
if (this.cfg.scrollable) {
this.theadClone
.find(PrimeFaces.escapeClientId(columnHeader.attr('id') + '_clone'))
.width(newWidth);
if (this.footerCols.length > 0) {
var footerCol = this.footerCols.eq(colIndex);
footerCol.width(newWidth);
}
}
}
}