2016-09-30 74 views
1

我想重新排列由column namecolumn index (string)而不是column index (int) jqGrid列。我看到这个APIjqGrid动态重新排列索引名称的列

$("#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); 

所以后我想触发getGridParam上述user_visibalColumn阵列列事件一段时间。

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

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

任何建议都会非常有帮助。

感谢。

回答

1

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

我同意使用列索引而不是列名的问题。这就是为什么我对免费的jqGrid fork进行了许多修改的原因,我开发的版本是4.7.1版本中开始生成主旧fork的商业版(请参阅the post)。我将方法remapColumnsByName与旧方法remapColumns一起引入。 The answer提供了the demo,它演示了remapColumnsByName的使用。此外,免费的jqGrid在内部主要保存列名而不是列索引,并且它有帮助程序选项iColByName,这有助于按列名获取列的当前索引。

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

+0

我遵循IST,所以只要睡觉(其上午1AM),如果你不介意可以在早上检查一下吗?并使用'jqGrid js version 5.1.1'作为免费版本。 –

+0

@RunakGupta:别急。我们可以在早上或下周继续。重要的是要明白,5.1.1是**不免费**至少在商业用途上,即使它的源代码被打开(参见[这里](https://github.com/tonytomov/jqGrid))。这是Guriddo jqGrid JS。您可以在文件的第一条评论中看到许可证。你必须支付的价格,你可以找到[这里](http://guriddo.net/?page_id=103334)。您可以通过阅读许可协议并在互联网上搜索有关该主题来查看详细问题。 – Oleg

+0

感谢@Oleg指出这一点,我不知道这一点,我会降级我的jqgrid库。 btw我在jqGrid中非常新,实际上这是我第一次使用它,作为一个Laravel开发人员,我使用'yajra datatables'包,这是用来解决我所有的目的。 –