【问题标题】:Column Chooser does not play well with too many columns having autoresizeOnLoad or autoresizable列选择器不能很好地处理具有 autoresizeOnLoad 或 autoresizable 的太多列
【发布时间】:2015-09-22 21:17:05
【问题描述】:

演示位于...

我注意到 2 个问题。

1) 在列选择器对话框中,我无法将列名栏拖放到其他框。

2) 点击 VIN 和年份栏的“-”图标,然后点击“确定”按钮。列标题无法调整大小。那么,如果这是这里的问题,我该如何将列选择器的 autoresizeOnLoad 设置为 false。

【问题讨论】:

    标签: jqgrid free-jqgrid


    【解决方案1】:

    您已经使用了columnChooserdone 回调并调用了

    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 回调,并且不要显式调用remapColumnscolumnChooser 方法会调用该方法,但上述"jqGridRemapColumns" 事件的事件处理程序仍然可以在列重映射结束时调整列的大小。

    更新:如果你下次发布 JSFiddle 演示会更好。可以对您的代码进行一些更改并重试更改。

    在我看来,不需要进行上述任何更改,只需使用 jqGrid 的shrinkToFit: false 选项。它将防止在隐藏 jqGrid 列时更改列宽。

    【讨论】:

    • 嗯。我尝试了你建议的前半部分,没有明显的新变化。所以,我尝试了你建议的第二部分,但仍然没有明显的新变化。我误会你了吗?
    • @fletchsod:请参阅我的回答的更新部分。您只需添加 jqGrid 的 shrinkToFit: false 选项。之后,将不再需要在 jqGridRemapColumns 处理程序中额外调用 autoResizeAllColumns
    • 我永远不会猜到shrinkToFit: false会是那个。
    • @fletchsod:如果您不使用shrinkToFit: false,则将根据列中定义的width(默认值150)重新计算列的宽度。因为您设置了网格的width,所以列宽应该根据用作比例的列width 缩小。如果您没有指定网格的总数 width 或者如果您使用 shrinkToFit: false 则不会发生收缩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2011-12-24
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    相关资源
    最近更新 更多