Javascript jqGrid colModel未调用函数

Javascript jqGrid colModel未调用函数,javascript,json,jqgrid,Javascript,Json,Jqgrid,在上面的代码中,调用了attrSetting。如果我将其更改为{“name”:“A”,“index”:“0”,“cellattr”:attrSetting}。它运行良好。那我该怎么办?cellattr将其视为字符串而不是函数 var gridData = {"list":[{"A":"abc", "B":"def", "C":"IRIS", "D":"Testing","E":"17-12- 2012","F":"Test", "attr":{"A":{"rows

在上面的代码中,调用了
attrSetting
。如果我将其更改为
{“name”:“A”,“index”:“0”,“cellattr”:attrSetting}
。它运行良好。那我该怎么办?cellattr将其视为字符串而不是函数

var gridData = {"list":[{"A":"abc", "B":"def", "C":"IRIS", "D":"Testing","E":"17-12-                 2012","F":"Test", "attr":{"A":{"rowspan": 3}}},{"A":"abc", "B":"def", "C":"IRIS", "D":"Testing","E":"17-12-2012","F":"Test", "attr":{"A":{"display":"none"}}},{"A":"abc", "B":"def", "C":"IRIS", "D":"Testing","E":"17-12-2012","F":"Test", "attr":{"A":{"display":"none"}}}]};
$(document).ready(function(){
prepareGrid();
});
prepareGrid = function(colModel) {
$("#grid").jqGrid({
    datatype    :   'local',
    contentType :   'application/json',
    data        :   gridData.list,
    loadtext    :   "Loading...",
    colNames    :   ['TB Element','GL Element', 'Company Name', 'Status', 'Date', 'User'],
    colModel    :   [
                     {"name":"A", "index":"0", "cellattr":"attrSetting" },
                     {name:"B", index:1 },
                     {name:"C", index:2},
                     {name:"D", index:3},
                     {name:"E", index:4},
                     {name:"F", index:5}
                    ],
    width       :   '500px',
    height      :   '200px',
    rownumWidth :   30,
    scrollrows  :   true,
    shrinkToFit :   false,
    rownumbers  :   true,
    viewrecords :   true,
});
};
function attrSetting(rowId, val, rawObject, cm) {
   var attr = rawObject.attr[cm.name], result;
   if (attr.rowspan) {
      result = ' rowspan=' + '"' + attr.rowspan + '"';
   } else if (attr.display) {
      result = ' style="display:' + attr.display + '"';
   }
   return result;
};
你应该换衣服

“cellattr”:“attrSetting”

“cellattr”:属性设置
此外,在使用jqGrid选项时,您应该小心。您当前的代码包含许多bug。举个例子:

  • 如果使用
    数据类型:“local”
    ,则应
    colModel
    中删除
    索引
    属性,或使用与
    名称
    属性值完全相同的值。如果不遵守该规则,将无法对网格列进行排序,并且本地数据的搜索/筛选也将不起作用
  • 您不使用jqGrid的
    pager
    toppager
    选项。在这种情况下,我严格建议您使用一些足够大的值指定
    rowNum
    选项,如
    rowNum:10000
    rowNum
    的defauls值为20(请参见表格中的“默认”列)。因此jqGrid将只显示您指定的数组
    gridData.list
    中的前20行
  • width
    height
    的值应该是像
    500
    200
    这样的数字,而不是像
    '500px'
    '200px'这样的字符串。
    height
    的值可以是字符串
    “auto”
    “%100”
  • 没有
    contentType
    选项
  • 我建议您使用
    gridview:true
    autoencode:true
    选项

谢谢你的建议。但我的colModel来自java,java是从数据库动态生成的。没有像attrSetting这样的单一函数,我有5个不同的函数。当我为这个调用模型准备json时,它会自动获取字符串。我正在使用jackson@Mitesh:不客气!看看哪个描述了您可以使用的变通方法。