【问题标题】:jqGrid colModel not calling a functionjqGrid colModel没有调用函数
【发布时间】:2013-06-26 15:14:28
【问题描述】:

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

【问题讨论】:

    标签: javascript json jqgrid


    【解决方案1】:

    你应该改变

    "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 选项。

    【讨论】:

    • 感谢您的建议。但是我的 colModel 来自 java,它是由数据库动态生成的。没有像attrSetting 这样的单一功能,我有 5 个不同的功能。当我为此调用模型准备 json 时,它会自动将其字符串化。 我正在使用 jackson 制作这个 json
    • @Mitesh:不客气!查看the answer,它描述了您可以使用的解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多