在将数据显示在网格中之前更改数据

时间:2012-10-23 19:20:03

标签: javascript jqgrid encode

我有一个由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
    }
})

1 个答案:

答案 0 :(得分:1)

回调函数beforeProcessing是您可以实现所需内容的正确位置。确切的实现取决于服务器返回的数据的格式。如果使用datatype: "json",那么从服务器返回的数据通常是一个序列化为JSON字符串的对象。 jqGrid使用内部jQuery.ajax自动解码JSON字符串并将其转换回对象。因此data回调的输入beforeProcessing参数是从服务器返回的对象。如果您不使用jqGrid的任何其他jsonReader选项,则jqGrid将以标准格式here等待输入数据。因此,您只需根据服务器返回的输入数据填充data对象(rowspagetotalrecords)的预期属性。你没有发布从服务器返回的任何数据的例子,所以我没有给你更详细的例子。