0

我有一个由 JSON 请求填充的 jqGrid,问题是请求以 base64 编码数据返回服务器,我需要在将数据分配给网格之前对其进行解码。

基本上我需要这样的东西:

$( "#grid" ).jqGrid( {
    datatype: "json",
    colNames: ["id", "Num", "Name", "Code"],
    colModel: [
        { name: "id", index: "id", width: 30, sortable: true, resizable: false },
        { name: "num", index: "num", width: 150, sortable: true, resizable: false },
        { name: "name", index: "name", width: 250, sortable: true, resizable: false },
        { name: "code", index: "code", width: 150, sortable: true, resizable: false },
    ],
    multiselect: true,
    width: "760",
    height: "100%",
    heightMetric: "%",
    shrinkToFit: false,
    rowNum: 20,
    rowList: [20,30,60],
    pager: "#pager",
    sortname: "id",
    viewrecords: true,
    sortorder: "asc",
    headertitles : true,
    caption: "Loading...",
    beforeProcessing: function(data){
       data = decompress(data); // Like this
    }
})
4

1 回答 1

1

回调函数beforeProcessing是您可以实现所有需要的正确位置。确切的实现取决于服务器返回的数据格式。如果使用datatype: "json",则从服务器返回的数据通常是一个序列化为 JSON 字符串的对象。jqGrid 在内部使用jQuery.ajax它自动解码 JSON 字符串并将其转换回对象。所以callback的入data参就是服务端返回的对象。beforeProcessing如果您不使用 jqGrid 的任何附加jsonReader选项,则 jqGrid 等待此处描述的标准格式的输入数据。所以你只需要填写对象的预期属性datarows、、pagetotalrecords) 基于从服务器返回的输入数据。您没有发布任何从服务器返回的数据的示例,因此我无法为您提供更详细的示例。

于 2012-10-23T20:16:51.887 回答