最近,在项目中用到了jqGrid进行数据的显示。但是一直不明白数据是怎么进行传递的。在jqGrid中,参数rowNum定义了每页显示多少行数据,而在Action中则使用rows属性定义了每页中显示的数据行数。所以,一直不明白两个参数是怎样联系的。

今天,在网上找到了合理的解释。jqGrid中PrmNames选项用于设置jqGrid将要向Server传递的参数名称。默认情况下包含rows:"rows",第一个rows从rowNum取值,第二个rows表示向Server传递数据时,使用的参数名为" rows "。因此才会将rowNum的值传递给了Server中的rows属性。

如果PrmNames选项中修改为rows:"pageSize",那么会将rowNum的数据值使用pageSize参数向Server进行传递,相应的Action中也就需要pageSize属性接收每页显示的数据行数了。

下面贴上prmNames选项和jsonReader选项的相关参数说明。

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

jsonReader用于设置如何解析从Server获取的json数据。

jsonReader : {  
    root: "rows",   // json中代表实际模型数据的入口,也就是Action中数据列表的名称  
    page: "page",   // json中代表当前页码的数据  
    total: "total", // json中代表页码总数的数据  
    records: "records", // json中代表数据行总数的数据  
    repeatitems: true, // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。  
    cell: "cell",  
    id: "id",  
    userdata: "userdata",  
    subgrid: {  
        root:"rows",   
        repeatitems: true,   
        cell:"cell"  
    }  
}