jqGrid可支持的数据类型:xml、json、jsonp、local or clientSide、xmlstring、jsonstring 、script、function (…)
Json数据需要定义jsonReader来跟服务器端返回的数据做对应,其默认值:
{
"cell": "cell",
"id": "id",
"page": "page",
"records": "records",
"repeatitems": true,
"root": "rows",
"subgrid": {
"cell": "cell",
"repeatitems": true,
"root": "rows"
},
"total": "total",
"userdata": "userdata"
}
这样服务器端返回的数据格式:
{
"page": "yyy",
"records": "zzz",
"rows": [
{
"cell": [
"cell11",
"cell12",
"cell13"
],
"id": "1"
},
{
"cell": [
"cell21",
"cell22",
"cell23"
],
"id": "2"
}
],
"total": "xxx"
}
jsonReader的属性
jQuery("#gridid").jqGrid({
...
jsonReader : {
root:"invdata",
page: "currpage",
total: "totalpages",
records: "totalrecords",
cell: "invrow"
},
...
});
totalpages: "xxx",
currpage: "yyy",
totalrecords: "zzz",
invdata : [
{id:"1", invrow:["cell11", "cell12", "cell13"]},
{id:"2", invrow:["cell21", "cell22", "cell23"]},
...
]
repeatitems :指明每行的数据是可以重复的,如果设为false,则会从返回的数据中按名字来搜索元素,这个名字就是colModel中的名字。
jsonReader : {
root:"invdata",
page: "currpage",
total: "totalpages",
records: "totalrecords",
repeatitems: false,
id: "0"
}
totalpages: "xxx",
currpage: "yyy",
totalrecords: "zzz",
invdata : [
{invid:"1",invdate:"cell11", amount:"cell12", tax:"cell13", total:"1234", note:"somenote"},
{invid:"2",invdate:"cell21", amount:"cell22", tax:"cell23", total:"2345", note:"some note"},
...
]
此例中,id属性值为“invid”。 一旦当此属性设为false时,我们就不必把所有在colModel定义的name值都赋值。因为是按name来进行搜索元素的,所以他的排序也不是按colModel中指定的排序结果。
用户数据(user data) 在某些情况下,我们需要从服务器端返回一些参数但并不想直接把他们显示到表格中,而是想在别的地方显示,那么我们就需要用到userdata标签
jsonReader: {
...
userdata: "userdata",
...
}
{
total: "xxx",
page: "yyy",
records: "zzz",
userdata: {totalinvoice:240.00, tax:40.00},
rows : [
{id:"1", cell:["cell11", "cell12", "cell13"]},
{id:"2", cell:["cell21", "cell22", "cell23"]},
...
]
}
在客户端我们可以有下面两种方法得到这些额外信息:
-
jQuery(“grid_id”).getGridParam(‘userData’)
-
jQuery(“grid_id”).getUserData()
-
jQuery(“grid_id”).getUserDataItem( key )