【发布时间】:2015-09-22 21:17:05
【问题描述】:
演示位于...
我注意到 2 个问题。
1) 在列选择器对话框中,我无法将列名栏拖放到其他框。
2) 点击 VIN 和年份栏的“-”图标,然后点击“确定”按钮。列标题无法调整大小。那么,如果这是这里的问题,我该如何将列选择器的 autoresizeOnLoad 设置为 false。
【问题讨论】:
标签: jqgrid free-jqgrid
演示位于...
我注意到 2 个问题。
1) 在列选择器对话框中,我无法将列名栏拖放到其他框。
2) 点击 VIN 和年份栏的“-”图标,然后点击“确定”按钮。列标题无法调整大小。那么,如果这是这里的问题,我该如何将列选择器的 autoresizeOnLoad 设置为 false。
【问题讨论】:
标签: jqgrid free-jqgrid
您已经使用了columnChooser 的done 回调并调用了
this.jqGrid("remapColumns", perm, true);
在您的代码中明确显示。你需要做的是添加调用
this.jqGrid("autoResizeAllColumns");
直接在调用remapColumns 之后。 autoresizeOnLoad:true 只需调用autoResizeAllColumns,但它会在重新加载网格时执行此操作。您想在使用 columnChooser 之后进行自动调整大小。
另一种可能的实现是使用以下事件处理程序:
$("#BatchReportJqgrid_Spreadsheet").bind("jqGridRemapColumns", function () {
$(this).jqGrid("autoResizeAllColumns");
});
每次调用remapColumns 方法后,最后一个代码调用autoResizeAllColumns。因此,您可以从columnChooser 的参数列表中删除不需要的done 回调,并且不要显式调用remapColumns。 columnChooser 方法会调用该方法,但上述"jqGridRemapColumns" 事件的事件处理程序仍然可以在列重映射结束时调整列的大小。
更新:如果你下次发布 JSFiddle 演示会更好。可以对您的代码进行一些更改并重试更改。
在我看来,不需要进行上述任何更改,只需使用 jqGrid 的shrinkToFit: false 选项。它将防止在隐藏 jqGrid 列时更改列宽。
【讨论】:
shrinkToFit: false 选项。之后,将不再需要在 jqGridRemapColumns 处理程序中额外调用 autoResizeAllColumns。
shrinkToFit: false会是那个。
shrinkToFit: false,则将根据列中定义的width(默认值150)重新计算列的宽度。因为您设置了网格的width,所以列宽应该根据用作比例的列width 缩小。如果您没有指定网格的总数 width 或者如果您使用 shrinkToFit: false 则不会发生收缩。