我在项目中使用jqGrid时,采用异步加载服务器数据,例如点击翻页、搜索时都重新加载数据。这样就会产生一个问题。 问题描述: 当对列表批量删除时,可以选择多个记录信息,选择当前页的第一条,如图: 点击下一页再选择一些记录,点击删除时,则无法删除前面页所选择的记录。 解决办法:jqGrid貌似没有解决这个问题的方法,所以只能自己写代码保存所选择的记录。需要借助jqGrid的两个事件方法: /** multiselect为ture,且点击头部的checkbox时才会触发此事件。aRowids:所有选中行的id集合,为一个数组。status:boolean变量说明checkbox的选择状态,t 在使用jqGrid这种基于JavaScript的表格插件时,开发者可能会遇到一种常见的问题,即在进行异步加载数据(如翻页或搜索)时,用户选定的行数据在切换页面后会丢失,导致无法进行批量操作,如批量删除。这是因为jqGrid在重新加载数据时会清空已有的选择状态。针对这一问题,我们需要采取自定义的方式来保存和恢复用户的选定记录。 我们需要理解jqGrid提供的两个关键事件方法: 1. `onSelectAll(aRowids, status)`: 这个事件会在用户选中或取消选中表头的全选复选框时触发。`aRowids`参数是一个包含所有选中行ID的数组,而`status`是一个布尔值,表示复选框的选中状态。如果`status`为`true`,则表示选中;反之,则表示取消选中。 2. `onSelectRow(aRowids, status)`: 当用户选择或取消选择某一行时,这个事件会被调用。`rowid`参数是当前行的ID,`status`同样是一个布尔值,表示行的选中状态,只有在`multiselect`设置为`true`时,`status`才有意义。 为了保存用户的选中记录,我们可以创建一个名为`selectIds`的数组来存储这些ID。在`onSelectAll`和`onSelectRow`事件中,我们需要根据`status`的值来决定是将ID添加到数组还是从数组中移除。具体实现如下: ```javascript // 初始化保存选择记录的数组 var selectIds = []; // 在jqGrid配置中监听这两个事件 jQuery("#gridid").jqGrid({ onSelectAll: function(aRowids, status) { if (status === true) { // 选中时,将所有选中的行ID保存到数组 $.each(aRowids, function(i, item) { saveIdToArray(item); }); } else { // 取消选中时,从数组中移除对应的行ID $.each(aRowids, function(i, item) { deleteIdFromArray(item); }); } }, onSelectRow: function(aRowids, status) { if (status === true) { // 选择行时,保存行ID saveIdToArray(aRowids); } else { // 取消选择时,移除行ID deleteIdFromArray(aRowids); } } }); // 将ID保存到数组 function saveIdToArray(item) { var exists = false; for (var i = 0; i < selectIds.length; i++) { if (item === selectIds[i]) { exists = true; break; } } if (!exists) { selectIds.push(item); } } // 从数组中删除ID function deleteIdFromArray(item) { if (selectIds.length > 0) { for (var i = 0; i < selectIds.length; i++) { if (item === selectIds[i]) { selectIds.splice(i, 1); break; } } } } ``` 通过这种方式,我们可以在用户翻页或搜索后,根据保存的`selectIds`数组恢复之前的选择状态,从而解决数据选中丢失的问题。在进行批量操作(如批量删除)时,只需对这个数组进行处理即可。 解决jqGrid翻页时数据选中丢失的关键在于利用jqGrid提供的事件机制,结合自定义的数组来存储用户的选择。这样,即使数据重新加载,也能保持用户的操作状态,提高了用户体验。对于类似的前端数据管理问题,理解并灵活运用JavaScript和相关库的事件机制是非常重要的。同时,确保代码的可读性和可维护性也是良好编程实践的一部分。在实际开发中,还可以考虑将这些逻辑封装成一个可重用的组件,以便在其他项目中复用。




























- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 计算机网络技术的应用及安全防御关键研究.docx
- IBMCloudBurst云基础架构概述-云概念.docx
- 基于蚁群算法的RBF神经网络在冲量式谷物流量传感器中的应用.docx
- 《特种文献数据库》使用方法(论文资料).ppt
- 李俊杰--网络互连与实现-计算机科学与技术.doc
- 当代大学生网络安全教育对策研究.docx
- 项目管理真题精选讲解.doc
- 工程项目管理概述.ppt
- 高软件工程项目师简历Word模板.doc
- 最新网络安全信息ppt通用模板.pptx
- 经典机器学习算法的极简式代码实现方案 经典机器学习算法极简实现的完整呈现 面向经典机器学习算法的极简实现方法 经典机器学习算法极简风格实现教程 经典机器学习算法的极简化实现路径 经典机器学习算法极简实
- (源码)基于AVR单片机的红外遥控车辆控制系统.zip
- 基于互联网环境下的高校辅导员思政教育工作研究.docx
- 基于物联网的开放实验室管理系统设计.docx
- 嵌入式系统软件仿真器研究分析方案与实现.doc
- 关于机械工程项目管理的讨论.docx


