jqGrid colModel未调用函数

jqGrid colModel not calling a function

本文关键字:函数 调用 colModel jqGrid      更新时间:2023-09-26

在上面的代码中调用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": attrSetting

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

  • 如果使用datatype: "local",则应colModel中删除index属性,或者使用与name属性的值完全相同的值。如果你不遵守规则,你将无法对网格列进行排序,本地数据的搜索/筛选也将不起作用
  • 您不使用jqGrid的pagertoppager选项。在这种情况下,我强烈建议您指定具有足够大值的rowNum选项,如rowNum: 10000rowNum的默认值为20(请参阅带有选项的表中的"Default"列)。因此,jqGrid将只显示您指定的数组gridData.list的前20行
  • widthheight的值应该是像500200这样的数字,而不是像'500px''200px'这样的字符串。height的值可以是字符串"auto""%100"
  • 没有contentType选项
  • 我建议您使用gridview: trueautoencode: true选项