jqGrid 按索引名称动态重新排序列

jqGrid to reorder column by index name dynamically

我想按 column namecolumn index (string) 而不是 column index (int) 对 jqGrid 列重新排序。这个我看过API

$("#list").jqGrid("remapColumns", [0,1,12,3,14,5,6,7,8,11,2], true);

它使用列索引号,但问题是在更改顺序后 jqGrid 执行重新索引并更改索引。所以我正在寻找 API 接受列名而不是整数值。

这是我获取列名的代码

var columnModels = grid.jqGrid('getGridParam', 'colModel');
var user_visibalColumn = [];
for (var columnModelIndex in columnModels) {
    var columnModel = columnModels[columnModelIndex];
    if (!columnModel.hidden) {
        user_visibalColumn.push(columnModel.name);         
    }
}
//console.log(user_visibalColumn); 

所以在事件发生一段时间后,我想用上面的 user_visibalColumn 数组列触发 getGridParam

这可能吗?如果没有,那么有没有办法添加 HTML 数据标签 col-id 以便我可以检索 col-id。

我看过 this answer,但我不知道如何实施 restoreColumnState

任何建议都会很有帮助。

谢谢。

请说明您使用(或可以使用)哪个版本的 jqGrid 以及来自哪个 jqGrid 分支。此外,重要的是要写下您使用的 jqGrid 的哪个分支(free jqGrid, commercial Gurrido jqGrid JS 或版本 <=4.7 的旧 jqGrid)。

我同意使用列索引而不是列名的问题。这就是为什么我在免费的 jqGrid 分支中做了很多更改的原因,我从制作主要的旧分支商业广告开始开发它(参见 the post) in the version 4.7.1. I introduced the method remapColumnsByName together with the old method remapColumns. provides the demo,它演示了 remapColumnsByName 的用法。此外,免费的 jqGrid 主要包含专栏名称而不是内部的列索引,它有帮助选项iColByName,这有助于通过列名获取列的当前索引。

我建议您将您使用的 jqGrid 升级到当前 (4.13.4) 版本的免费 jqGrid 并使用 remapColumnsByName