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

时间:2016-09-30 10:27:03

标签: jquery jqgrid jqgrid-php

我想按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执行reindex并更改索引。所以我正在寻找接受列名而不是整数值的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); 

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

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

我看过this answer,但我无法弄清楚如何实施restoreColumnState

任何建议都会非常有用。

感谢。

1 个答案:

答案 0 :(得分:1)

请写下你使用(或可以使用)的jqGrid版本和jqGrid的哪个分支。此外,重要的是要编写您使用的jqGrid的哪个分支(free jqGrid,商业Gurrido jqGrid JS或版本中的旧jqGrid< = 4.7)。

我同意使用列索引而不是列名的问题。这就是为什么我在免费的jqGrid fork中进行了很多更改的原因,我开发的是从版本4.7.1开始制作主要的旧fork商业广告(参见the post)。我将方法remapColumnsByName与旧方法remapColumns一起介绍。 The answer提供了the demo,其中演示了remapColumnsByName的用法。此外,自由jqGrid主要在内部保存列名而不是列索引,并且它具有帮助选项iColByName,这有助于通过列名获取列的当前索引。

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