jqGrid colModel没有调用函数

时间:2013-06-26 15:14:29

标签: 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":{"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;
};

1 个答案:

答案 0 :(得分:0)

你应该改变

"cellattr":"attrSetting"

"cellattr": attrSetting

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

  • 如果您使用datatype: "local",则应该{strong>从index移除 colModel属性,或使用与name的值完全相同的值属性。如果您不遵守规则,则无法对网格列进行排序,并且本地数据的搜索/过滤也不会起作用。
  • 您不使用jqGrid的pagertoppager选项。在这种情况下,我严格建议您指定rowNum选项,其中包含一些足够大的值rowNum: 10000rowNum的默认值为20(请参阅表the options中的“默认”列)。因此,jqGrid将仅显示您指定的数组gridData.list中的前20行。
  • widthheight的值应为数字,如500200,而非'500px'和{{} {1}}。 '200px'的值可以是字符串height"auto"
  • 没有"%100"选项。
  • 我建议您使用contentTypegridview: true选项。