jqGrid按列名排序索引

简单的问题。 是否有一个函数来在网格中按名称获取列的当前排序位置?

remapColumns方法中使用的索引与colModel数组中的索引相同。 重要的是要理解,索引可以与最初使用的jqGrid的colModel参数不同。 如果jqGrid使用选项rownumbers: true ,将在colModel数组的第一个位置插入名为'rn'的其他列。 colModel数组的所有其他元素的索引将递增。 以同样的方式选择subGrid: true插入列'subgrid' subGrid: true选项subGrid: true插入列'subgrid' subGrid: true 'subgrid' 。 以同样的方式,选项treeGrid: true跟随colModel数组附加一些额外的隐藏列,其名称可以由treeReader定义。 在treeGridModel: 'nested'情况下,列的默认名称是: 'level''lft''rgt''isLeaf''expanded''loaded''icon''level''parent'对于treeGridModel: 'adjacency''parent''isLeaf''expanded''loaded''icon' treeGridModel: 'adjacency'

因此, colModel名称查找列的索引,您应该获取当前的colModel ,查看项目并找到'name'属性是您需要的列名称的项目。 要获取colModel您可以使用$("#grid")[0].p.colModel$("#grid").jqGrid('getgridParam', 'colModel') 。 所以代码可以如下所示:

 var getColumnIndexByName = function (columnName) { var cm = $(this).jqGrid('getGridParam', 'colModel'), i, l = cm.length; for (i = 0; i < l; i++) { if (cm[i].name === columnName) { return i; // return the index } } return -1; }; 

和用法一样

 var $grid = $("#grid"), iCol = getColumnIndexByName.call($grid[0], 'myColName'); 

要获取当前已排序列的名称,可以使用$grid.jqGrid('getGridParam', 'sortname')