列选择器不能很好地处理太多具有 autoresizeOnLoad 或 autoresizable 的列
Column Chooser does not play well with too many columns having autoresizeOnLoad or autoresizable
演示位于...
我注意到 2 个问题。
1) 在“列选择器”对话框中,我无法将列名称栏拖放到其他框中。
2) 单击 VIN 和 Year 列的“-”图标,然后单击 "OK" 按钮。列 header 无法调整大小。那么,如果这是问题所在,我该如何将列选择器的 autoresizeOnLoad 设置为 false。
您已经使用了 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"
事件的事件处理程序仍然可以在列重新映射结束时调整列的大小。
更新:如果你下次post JSFiddle 演示会更好。人们将能够对您的代码进行一些更改并重试这些更改。
在我看来,不需要进行上述任何更改,只需使用 jqGrid 的 shrinkToFit: false
选项即可。它将防止在隐藏 jqGrid 的列时更改列的宽度。
演示位于...
我注意到 2 个问题。
1) 在“列选择器”对话框中,我无法将列名称栏拖放到其他框中。
2) 单击 VIN 和 Year 列的“-”图标,然后单击 "OK" 按钮。列 header 无法调整大小。那么,如果这是问题所在,我该如何将列选择器的 autoresizeOnLoad 设置为 false。
您已经使用了 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"
事件的事件处理程序仍然可以在列重新映射结束时调整列的大小。
更新:如果你下次post JSFiddle 演示会更好。人们将能够对您的代码进行一些更改并重试这些更改。
在我看来,不需要进行上述任何更改,只需使用 jqGrid 的 shrinkToFit: false
选项即可。它将防止在隐藏 jqGrid 的列时更改列的宽度。