使用自定义格式化程序后,在Jqgrid中排序不起作用

时间:2014-09-18 17:03:24

标签: javascript jquery json jqgrid jqgrid-formatter

我使用jqgrid,数据类型为json,值从另一个URL检索,

     colModel: [
    { name: "Details", width: 200,classes: 'pointer wrap',sortable: false,
         formatter: function myFormatter(cellvalue, options, rowObject){
         number=rowObject.properties.number;
         name= rowObject.properties.shortName;
          fullDetails= '<strong> '+name+ '</strong> </br>[<a id="pointer"  title="Click to  search" href= http://google.com/search?search='+number+' target='+number+'>'+number+'</a>]';
         return fullDetails;

         }
        },
   { name:"name",jsonmap: "properties.shortName", width: 200,classes: 'pointer wrap',hidden:true},
    {name:"number", jsonmap: "properties.number", width: 50 ,sortable: true,hidden:true},
    { name:"date",jsonmap: "properties.date", width: 80,hidden :false}

 ],
    pager: "#pager",
    //rowNum: 20,
    rowNum: 100,
    rowList: [10, 20, 30],
    sortname: "matter",
    sortorder: 'asc',
    viewrecords: true,
    gridview: true,
    loadonce : true,
    autoencode: true,
    height:'auto',
    hidegrid: false,

    caption: "Details",
    jsonReader : {
        repeatitems: false,

        root: "properties"

       }

装载工作正常 但是在单击列标题后对其进行排序

TypeError:rowObject.properties未定义 显示number = rowObject.properties.number; 什么可能出错? 可能有什么问题? 下面给出的是样本数据

             [
                {"properties":
                   {"date":1409327760,"name":"agent M","number":"4117859","shortName":"AM"},"children":null,"valId":"225","objectType":"VAL"},
                {"properties":
                    {"date":14093278860,"name":"agent x","number":"97893783","shortName":"AX"},"children":null,"valId":"191","objectType":"VAL"}
        ]

1 个答案:

答案 0 :(得分:1)

您不应该使用name: "properties.number"之类的列名等。您应该查看name属性的值,例如将用作变量名称(或属性名称)的值以及id属性值的部分。

jQuery("#list").jqGrid('setGridParam',{datatype:'local'});内的loadComplete行通常是错误的。如果您从服务器加载数据并使用datatype: "json",则应使用loadonce: true代替。

您没有发布您使用的datatype,并且没有发布输入数据的示例(2行输入数据就足够了)。似乎怀疑repeatitems: true的值jsonReader。不过我可以假设您可以使用jsonmap属性来读取原始数据(从服务器返回):

{ name: "number", jsonmap: "properties.number", width: 50, hidden: true}

请参阅the demo