列的列索引与colModel数组中列的索引相同在jqGrid初始化之前(与输入参数colModel中的相同)。如果您使用rownumbers:true、multiselect:true 或subGrid:true,则附加列将作为第一行添加到网格中,因此colModel 数组中作为 jqGrid 参数的列索引可以是其他列网格初始化后。例如,您可以使用这个简单的函数来获取索引
var getColumnSrcIndexByName = function(grid,columnName) {
var cm = grid.jqGrid('getGridParam','colModel'),
i=0, index=0, l=cm.length, cmName;
while (i<l) {
cmName = cm[i].name;
i++;
if (cmName===columnName) {
return index;
} else if (cmName!=='rn' && cmName!=='cb' && cmName!=='subgrid') {
index++;
}
}
return -1;
};
var index = getColumnSrcIndexByName($("#list"),'MyColumn');
更新: Free jqGrid fork 简化了从列名获取列索引,因为它在内部保存了参数iColByName,这是列名的映射。可以通过
获得
iColByName
var iColByName = $("#list").jqGrid("getGridParam", "iColByName");
和iColByName["MyColumn"] 将是所需的列索引 (iCol)。我提醒一下,可以使用getGridParam不带任何参数来获取对jqGrid的all参数的引用:
var p = $("#list").jqGrid("getGridParam");
价值
var iCol = p.iColByName["MyColumn"];
将是列索引,p.colModel[iCol].name 将是 "MyColumn"。