jqgrid-parmNames和jsonReader的使用,以及json的返回格式

prmNames : {  
02.     page:"page",    // 表示请求页码的参数名称  
03.     rows:"rows",    // 表示请求行数的参数名称  
04.     sort: "sidx", // 表示用于排序的列名的参数名称  
05.     order: "sord", // 表示采用的排序方式的参数名称  
06.     search:"_search", // 表示是否是搜索请求的参数名称  
07.     nd:"nd", // 表示已经发送请求的次数的参数名称  
08.     id:"id", // 表示当在编辑数据模块中发送数据时,使用的id的名称  
09.     oper:"oper",    // operation参数名称(我暂时还没用到)  
10.     editoper:"edit", // 当在edit模式中提交数据时,操作的名称  
11.     addoper:"add", // 当在add模式中提交数据时,操作的名称  
12.     deloper:"del", // 当在delete模式中提交数据时,操作的名称  
13.     subgridid:"id", // 当点击以载入数据到子表时,传递的数据名称  
14.     npage: null,   
15.     totalrows:"totalrows" // 表示需从Server得到总共多少行数据的参数名称,参见jqGrid选项中的rowTotal  
16. }  

可以通过这个选项来自定义当向Server发送请求时,默认发送的参数名称。
这个参数很重要也很有用,正是通过这个参数,可以方便的改变默认的request的参数,以符合Server端的需要。比如在prmNames中search默认的值为”_search”,这在Struts2的Action中不太方便命名成员变量和getter/ setter。因此可以使用 prmNames: {search: ‘search’} 来改变这一默认值为”search”,这在Struts2的Action对象中就很好设置getter/ setter了,即getSearch()和setSearch()。当然其他名字也是可以的。

1.2 jsonReader选项

jsonReader是jqGrid的一个重要选项,用于设置如何解析从Server端发回来的json数据。其默认值为:

jsonReader : {  
02.     root: "rows",   // json中代表实际模型数据的入口  
03.     page: "page",   // json中代表当前页码的数据  
04.     total: "total", // json中代表页码总数的数据  
05.     records: "records", // json中代表数据行总数的数据  
06.     repeatitems: true, // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。  
07.     cell: "cell",  
08.     id: "id",  
09.     userdata: "userdata",  
10.     subgrid: {  
11.         root:"rows",   
12.         repeatitems: true,   
13.         cell:"cell"  
14.     }  
15. }  

可以这样理解,prmNames设置了如何将Grid所需要的参数传给Server,而jsonReader设置了如何去解析从Server端传回来的json数据。如果没有设置jsonReader的话,jqGrid将会根据默认的设置来解析json数据,并显示在表格里。但如果传回来的json数据,不太符合默认设置(比如内部的结构名不太一样),那么就有必要修改这一设置。比如:

jsonReader: {  
02.     root:"gridModel",     
03.     page: "page",     
04.     total: "total",  
05.     records: "record",  
06.     repeatitems : false  
07. }  

注1:据其他网友的文章,如果设置repeatitems为false,不但数据可以乱序,而且不用每个数据元素都要具备,用到哪个找到哪个就可以了。实验却是如此。
注2:cell、id在repeatitems为true时可以用到,即每一个记录是由一对id和cell组合而成,即可以适用另一种json结构。援引文档中的例子:

repeatitems为true时:

jQuery("#gridid").jqGrid({  
02.     ...  
03.     jsonReader : {  
04.         root:"invdata",  
05.         page: "currpage",  
06.         total: "totalpages",  
07.         records: "totalrecords"  
08.     },  
09.     ...  
10. });  

json结构为:
{
02. “totalpages”: “xxx”,
03. “currpage”: “yyy”,
04. “totalrecords”: “zzz”,
05. “invdata” : [
06. {“id” :”1”, “cell” :[“cell11”, “cell12”, “cell13”]}, // cell中不需要各列的name,只要值就OK了,但是需要保持对应
07. {“id” :”2”, “cell” :[“cell21”, “cell22”, “cell23”]},
08. …
09. ]
10. }

repeatitems为false时:

jQuery("#gridid").jqGrid({  
02.     ...  
03.     jsonReader : {  
04.         root:"invdata",  
05.         page: "currpage",  
06.         total: "totalpages",  
07.         records: "totalrecords",  
08.         repeatitems: false,  
09.         id: "0"  
10.     },  
11.     ...  
12. });  

json结构为:

{   
02.     "totalpages" : "xxx",   
03.     "currpage" : "yyy",  
04.     "totalrecords" : "zzz",  
05.     "invdata" : [  
06.                  {"invid" : "1","invdate":"cell11", "amount" :"cell12", "tax" :"cell13", "total" :"1234", "note" :"somenote"}, // 数据中需要各列的name,但是可以不按列的顺序  
07.                  {"invid" : "2","invdate":"cell21", "amount" :"cell22", "tax" :"cell23", "total" :"2345", "note" :"some note"},  
08.                  ...  
09.     ]  
10. }  
  1. colModel的重要选项

    和jqGrid一样colModel也有许多非常重要的选项,在使用搜索、排序等方面都会用到。这里先只说说最基本的。
    •name:为Grid中的每个列设置唯一的名称,这是一个必需选项,其中保留字包括subgrid、cb、rn。
    •index:设置排序时所使用的索引名称,这个index名称会作为sidx参数(prmNames中设置的)传递到Server。
    •label:当jqGrid的colNames选项数组为空时,为各列指定题头。如果colNames和此项都为空时,则name选项值会成为题头。
    •width:设置列的宽度,目前只能接受以px为单位的数值,默认为150。
    •sortable:设置该列是否可以排序,默认为true。
    •search:设置该列是否可以被列为搜索条件,默认为true。
    •resizable:设置列是否可以变更尺寸,默认为true。
    •hidden:设置此列初始化时是否为隐藏状态,默认为false。
    •formatter:预设类型或用来格式化该列的自定义函数名。常用预设格式有:integer、date、currency、number等(具体参见文档)。

    .

    原文:http://blog.csdn.net/yangbobo1992/article/details/7930040

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值