【问题标题】:JQGrid columns reorderJQGrid 列重新排序
【发布时间】:2013-02-10 07:21:13
【问题描述】:

我尝试过使用remapColumns

grid.remapColumns(newOrder, false, false);

但遇到了一个奇怪的问题 - 列标题已重新排序,但列信息保持不变。怎么解决?

编辑:

整个方法

permutateGrid: function (gridID, columnsToShow, columnsToHide) {
    var newOrder = [];
    var grid = $(gridID);

    for (var i = 0; i < columnsToShow.length; i++) {
        newOrder.push(GridHelpers.getColumnSrcIndexByName(grid, columnsToShow[i]));
    }

    var columnsCount = grid.jqGrid("getGridParam", "colModel").length;
    for (var i = 0; i < columnsCount; i++) {
        if (newOrder.indexOf(i) === -1) {
            newOrder.push(i);
        }
    }

    showColumns(gridID, columnsToShow);
    hideColumns(gridID, columnsToHide);

    grid.jqGrid('remapColumns', newOrder, false, false);
    grid[0].jqGrid().updateColumns();
},

【问题讨论】:

  • 您在“列信息”下的意思是什么?究竟是什么问题?你使用与colModel 长度相同的newOrder 数组吗?
  • 列信息是列内容。 newOrder 与 'colModel' 的长度相同,请参阅编辑
  • 您使用哪个版本的 jqGrid?我不知道updateColumns。它现在在 jqGrid 中不存在。而且我还是不明白你有什么问题。什么是“列内容”?你的意思是网格列的列标题吗?您何时何地调用permutateGrid 函数(例如在空网格中、在某些回调内部等)
  • 我删除了updateColumn 字符串,因为没有这样的功能。我正在使用 jqGrid 4.4.1 版。我从网格回调中调用permutateGrid 并提供一些信息,然后调用'reloadGrid'。问题如下:只有列 HEADERS 在这些操作之后重新排序。
  • @Oleg:wiki (trirand.com/jqgridwiki/doku.php?id=wiki:methods) 仍然列出了 updateColumns 方法,这可能是混乱的来源。另请参阅此问题 (stackoverflow.com/questions/18191543/…) 和 jqGrid 论坛 (trirand.com/blog/?page_id=393/help/…) 上的此帖子,它引导我来到这里。

标签: javascript jqgrid remap


【解决方案1】:

如果要更新网格内容,remapColumns 的第二个参数应该是trueremapColumns 的典型用法是grid.jqGrid("remapColumns", newOrder, true, true);(或grid.remapColumns(newOrder, true);)。

【讨论】:

  • 这种方法适用于带有子网格的网格吗?
  • 我的问题出现了 - 我尝试重新映射所有列,包括 subgrid - 但它必须保持在 0 索引
  • @skayred:我建议你下次加入 screenshort。它会清除很多东西。此外,在大多数情况下,还需要更完整的带有 jqGrid 参数的 JavaScript 代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多