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

  1. prmNames : {  
  2.     page:"page",    // 表示请求页码的参数名称  
  3.     rows:"rows",    // 表示请求行数的参数名称  
  4.     sort: "sidx"// 表示用于排序的列名的参数名称  
  5.     order: "sord"// 表示采用的排序方式的参数名称  
  6.     search:"_search"// 表示是否是搜索请求的参数名称  
  7.     nd:"nd"// 表示已经发送请求的次数的参数名称  
  8.     id:"id"// 表示当在编辑数据模块中发送数据时,使用的id的名称  
  9.     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数据。其默认值为:

  1. jsonReader : {  
  2.     root: "rows",   // json中代表实际模型数据的入口  
  3.     page: "page",   // json中代表当前页码的数据  
  4.     total: "total"// json中代表页码总数的数据  
  5.     records: "records"// json中代表数据行总数的数据  
  6.     repeatitems: true// 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。  
  7.     cell: "cell",  
  8.     id: "id",  
  9.     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数 据,不太符合默认设置(比如内部的结构名不太一样),那么就有必要修改这一设置。比如:

  1. jsonReader: {  
  2.     root:"gridModel",     
  3.     page: "page",     
  4.     total: "total",  
  5.     records: "record",  
  6.     repeatitems : false  
  7. }  

 

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

repeatitems为true时:

  1. jQuery("#gridid").jqGrid({  
  2.     ...  
  3.     jsonReader : {  
  4.         root:"invdata",  
  5.         page: "currpage",  
  6.         total: "totalpages",  
  7.         records: "totalrecords"  
  8.     },  
  9.     ...  
  10. });  

json结构为:

  1. {   
  2.     "totalpages""xxx",   
  3.     "currpage""yyy",  
  4.     "totalrecords""zzz",  
  5.     "invdata" : [  
  6.                  {"id" :"1""cell" :["cell11""cell12""cell13"]},   // cell中不需要各列的name,只要值就OK了,但是需要保持对应  
  7.                  {"id" :"2""cell" :["cell21""cell22""cell23"]},  
  8.                  ...  
  9.     ]  
  10. }  

 

 

repeatitems为false时:

  1. jQuery("#gridid").jqGrid({  
  2.     ...  
  3.     jsonReader : {  
  4.         root:"invdata",  
  5.         page: "currpage",  
  6.         total: "totalpages",  
  7.         records: "totalrecords",  
  8.         repeatitems: false,  
  9.         id: "0"  
  10.     },  
  11.     ...  
  12. });  

json结构为:

  1. {   
  2.     "totalpages" : "xxx",   
  3.     "currpage" : "yyy",  
  4.     "totalrecords" : "zzz",  
  5.     "invdata" : [  
  6.                  {"invid" : "1","invdate":"cell11""amount" :"cell12""tax" :"cell13""total" :"1234""note" :"somenote"}, // 数据中需要各列的name,但是可以不按列的顺序  
  7.                  {"invid" : "2","invdate":"cell21""amount" :"cell22""tax" :"cell23""total" :"2345""note" :"some note"},  
  8.                  ...  
  9.     ]  
  10. }  

 

 

 

 

 

 

2. 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等

你可能感兴趣的:(jqGrid)