Есть ли способ получить номер столбца по имени столбца в jqgrid - PullRequest
4 голосов
/ 04 февраля 2011

Я пытался получить доступ к rowObject в пользовательской функции форматирования по имени столбца, но он не дал никаких значений.Я пробовал это с типом данных JSON и XML.

Есть ли способ получить номер столбца по имени столбца в jqgrid.

function Draw_Link ( cellvalue , options , rowObject )
 { 
  return "<a href='someurl.php?col_name="+rowobject.col_name+"'>"+cellvalue+"</a>";
 }

1 Ответ

11 голосов
/ 12 марта 2011

Индекс столбца для столбца такой же, как индекс столбца в 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".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...