Индекс столбца для столбца такой же, как индекс столбца в 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');
ОБНОВЛЕНО: Свободная вилка jqGrid упрощает получение индекса столбца из имени столбца, потому что он внутренне содержитпараметр iColByName
, который является картой по имени столбца.Можно просто получить iColByName
через
var iColByName = $("#list").jqGrid("getGridParam", "iColByName");
, а iColByName["MyColumn"]
будет требуемым индексом столбца (iCol
).Напоминаю, что можно использовать getGridParam
без каких-либо параметров, чтобы получить ссылку на все параметры jqGrid:
var p = $("#list").jqGrid("getGridParam");
Значение
var iCol = p.iColByName["MyColumn"];
будетиндекс столбца и p.colModel[iCol].name
будет "MyColumn"
.