jqgrid 使用总结

jqgrid的分页栏pager默认是将分页栏放在表格下方,因为公司系统中所有表格的分页都放在表格上方,所以需要做属性的改动,上网查了好久都没有相关资料,然后在一次看jqgrid必需引用的js中发现了出来toppager的相关代码,于是,直接搜toppager,发现这就是将分页栏放在表格上方的属性

1.将分页栏放在表格的上方,toppager

2.jqgrid从后台获取数据后,需要以json的格式返回数据,格式如{currpage:当前页面,totalpage:总页数,totalrecords:总记录数,rows:[显示在jqgrid的值列表]}

返回json串的变量名必须与前台jsonreader中的变量名一致

jsonReader: {
root: "rows",
total: "totalpage",
page: "currpage",
records: "totalrecords"
},
3.jqgrid第一次查询能展示,之后就不能在查询了。

第二次以上的查询都需要先reload

4.jqgrid改变checkbox的选中状态触发事件onrowselect,还有全选事件onselectall

本次的需求举个例子,总共100条记录,每页30条,在任何一页选择全选按钮时,所有100条数据都必须是选中状态,当然,取消全选,所有100条记录都是未选中状态,而且翻页后,任何一页记录的选中状态都是对的,而且之后所做的选择或取消某一行都是在这个基础上。而jqgrid默认的全选是选中当前页的所有记录。这就是问题的所在。

针对这个需求有两种解决方案:1)在页面放两个隐藏的输入框,一个用来记录全选框的选中状态onselectall时记录,另一个用来记录选中行的rowid在onrowselect时记录,这个rowid在整个jqgrid的所有记录中都是唯一的。在对应页上,经过计算将对应的行选中 2)方法二就是在查询后,将所有记录放在temp表中,每做选中都直接记录到表中。但这个方法有一个问题,就是选择全选,然后翻页,在加载结束后将对应行选中selectrow时,会触发onselectrow,会导致第二次进入该页记录就不对。这个问题采用的解决方法是,在进入页面时选中行不触发写临时表的动作。

你可能感兴趣的:(前台开发)