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