2013-06-26 46 views
0

在上面的代码attrSetting被调用。如果我将其更改为{"name":"A", "index":"0", "cellattr":attrSetting}。它运行良好。所以我该怎么做? cellattr将它视为字符串而不是函数。jqGrid colModel不调用函数

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; 
}; 

回答

0

你应该只改变

"cellattr":"attrSetting" 

"cellattr": attrSetting 

此外,你应该在jqGrid的选项使用慎重。你当前的代码包含许多错误。只是一些例子:

  • 如果使用datatype: "local"你应该colModel删除index性能或使用它们确切一样name属性的值值。如果您不遵守规则,您将无法对网格列进行排序,并且本地数据的搜索/过滤也不会起作用。
  • 您不使用jqGrid的pagertoppager选项。在这种情况下,我强烈建议您指定rowNum选项,其值足够大,如rowNum: 10000rowNum的违约值为20(请参阅表中的“默认”列,其中the options)。所以jqGrid将只显示您指定的数组gridData.list的前20行。
  • widthheight值应500200,而不是像'500px''200px'字符串。 height的值可以是字符串"auto""%100"
  • 没有contentType选项。
  • 我建议您使用gridview: trueautoencode: true选项。
+0

坦克为您的建议。但是我的colModel来自java,它是从数据库动态生成的。没有像'attrSetting'这样的单个函数,我有5个不同的函数。当我为这个调用模型准备json时,它会自动自动获取字符串。 **我正在使用杰克森使这个json ** – Mitesh

+0

@Mitesh:不客气!看看[答案](http://stackoverflow.com/a/5175127/315935),它描述了一种可以使用的解决方法。 – Oleg