jqGrid翻页时数据选中丢失问题的解决办法
在项目中运用jqGrid进行异步加载服务器数据时,经常会在翻页或搜索时遇到数据选中丢失的问题。这篇文章主要了这个问题的解决方案。
当你在jqGrid中采用异步加载数据时,例如点击翻页或搜索,数据会重新从服务器加载。在此过程中,如果在不同页面选择了记录并尝试进行批量操作,如删除,你可能会发现之前选择的记录无法被删除,这就是数据选中丢失的问题。
针对这个问题,jqGrid本身并没有提供直接的解决方案。我们需要通过编写额外的代码来保存所选的记录。这可以通过监听jqGrid的两个重要事件来实现:onSelectAll和onSelectRow。
当multiselect设置为true,且点击头部的checkbox时,onSelectAll事件被触发。此事件提供了一个参数aRowids,这是所有选中行的id集合。无论checkbox是否选择,aRowids始终有值。我们可以通过这个事件来保存或取消保存所有选中的记录。
另一方面,当某行被选中或取消选中时,onSelectRow事件被触发。我们可以使用这个事件来保存或删除当前选中的记录。
以下是解决此问题的大体代码:
我们需要一个数组来保存所有选中的记录的id,名为selectIds。然后,我们在jqGrid的初始化中设置上述两个事件的处理器。
在onSelectAll和onSelectRow的事件处理器中,我们检查status参数来确定是保存还是删除选中的记录。然后,我们使用saveIdToArray和deleteIdFromArray函数来操作selectIds数组。
saveIdToArray函数检查item是否已经在selectIds数组中,如果没有,就将其添加到数组中。deleteIdFromArray函数则从selectIds数组中删除指定的item。
这样,无论用户在哪个页面选择了哪些记录,我们都可以通过操作selectIds数组来进行相应的操作,如删除记录。
编程语言
- jqGrid翻页时数据选中丢失问题的解决办法
- ASP.NET简单实现注销功能
- seajs加载jquery时提示$ is not a function该怎么解决
- Thinkphp5 自定义上传文件名的实现方法
- Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB
- jQuery选择器中的特殊符号处理方法
- php中实现获取随机数组列表的自定义函数
- php封装的连接Mysql类及用法分析
- 利用yahoo汇率接口实现实时汇率转换示例 汇率转
- sqlserver中遍历字符串的sql语句
- 用js写的一个路由(简单实例)
- JavaScript 消息框效果【实现代码】
- 下一代Bootstrap的5个特点 超酷炫!
- JavaScript判断表单为空及获取焦点的方法
- 一个asp快速字符串连接类
- Javascript实现字数统计