有没有办法在jqgrid中按列名获取列号

kir*_*ika 4 jquery-plugins jqgrid

我试图通过列名访问自定义格式化程序函数中的rowObject,但它没有给出任何值.我已尝试使用JSON和XML数据类型.

有没有办法在jqgrid中按列名获取列号.

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

Ole*_*leg 11

列的列索引与jqGrid初始化之前colModel数组中的列的索引相同(它与输入参数中的列相同).如果您使用,或者其他列将作为第一行添加到网格中,那么在数组中作为jqGrid参数的列索引可以是网格初始化之后的其他列.您可以使用此简单函数来获取索引colModelrownumbers:truemultiselect:truesubGrid:truecolModel

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');
Run Code Online (Sandbox Code Playgroud)

更新: 免费的jqGrid fork简化了从列名获取列索引,因为它在内部保存参数iColByName,即列名称的映射.一个人可以iColByName通过

var iColByName = $("#list").jqGrid("getGridParam", "iColByName");
Run Code Online (Sandbox Code Playgroud)

并且iColByName["MyColumn"]将所需的列索引(iCol).我提醒一个人可以使用getGridParam不带任何参数来获取对jqGrid的所有参数的引用:

var p = $("#list").jqGrid("getGridParam");
Run Code Online (Sandbox Code Playgroud)

价值

var iCol = p.iColByName["MyColumn"];
Run Code Online (Sandbox Code Playgroud)

将是列索引并且p.colModel[iCol].name将是"MyColumn".