0

在上面的代码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;
};
4

1 回答 1

0

你应该改变

"cellattr":"attrSetting"

"cellattr": attrSetting

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

  • 如果您使用datatype: "local",您应该从中删除 index属性colModel或使用与属性值完全相同的值name。如果您不遵守规则,您将无法对网格列进行排序,并且本地数据的搜索/过滤也将无法正常工作。
  • 您不使用jqGrid 的pagerortoppager选项。在这种情况下,我强烈建议您指定rowNum具有足够大值的选项,例如rowNum: 10000. 的默认值为20(请参阅表中带有选项rowNum的“默认”列)。因此 jqGrid 将只显示您指定的数组的前 20 行。gridData.list
  • widthand的值height应该是数字,如500or200而不是字符串,如'500px'and '200px'。的值height可以是字符串"auto""%100".
  • 没有contentType选择。
  • 我建议您使用gridview: trueautoencode: true选项。
于 2013-06-26T16:32:43.577 回答