思路:定义全局的array(selectedIds),当列表选中的时候就push进去,当列表取消选中时,将该项从selectedIds中删除

重点:1.列表加载完成时为列表增加复选框,并给每一个checkbox赋name;

2.回显时模拟checkbox的click事件;

代码如下:

var selectedIds = [];
$(function () {
InitChooseCourseList();
//绑定搜索
$("#SearchCourseForChoose").click(function () {
SearchForChoose();
});
}); //页面列表初始化
function InitChooseCourseList() {
var $gridList = $("#gridList");
var postData = $('#CourseForm').formSerialize();
var classId = $("#ClassId").val();
postData["ClassId"] = classId;
$gridList.Grid({
mtype: 'Post',
postData: postData,
url: "/TopOnline/Class/ChooseCourseGrid",
height: ($(window).height() - 145),
colModel: [
{ label: 'ID', name: 'ID', hidden: true },
{ label: 'CourseSubjectId', name: 'CourseSubjectId', hidden: true },
{ label: '课程名称', name: 'Name', width: fixJqgridColumnWidthByPercent(0.45), align: 'center' },
{ label: '所属科目', name: 'CourseSubjectName', width: fixJqgridColumnWidthByPercent(0.45), align: 'center' }
],
pager: '#gridPager',
viewrecords: true,
multiselect: true,
//为表格增加复选框
gridComplete: function () {
var rowIds = jQuery("#gridList").jqGrid('getDataIDs');
for (var k = 0; k < rowIds.length; k++) {
var curRowData = jQuery("#gridList").jqGrid('getRowData', rowIds[k]);
var curChk = $("#" + rowIds[k] + "").find(":checkbox");
curChk.attr('name', 'check_box_' + curRowData['ID']);   //给每一个checkbox赋名字
curChk.attr('value', curRowData['ID']);   //给checkbox赋值
curChk.attr('style', 'margin:7px;');
}
},
//加载完成模拟复选框的点击事件
loadComplete: function (xhr) {
var rowArray = xhr.rows;
if (selectedIds.length > 0) {
var count = 0;
$.each(rowArray, function (i, item) {
if (selectedIds.indexOf(item.ID.toString()) > -1) {
//判断arrayNewList中存在item.Id值时,选中前面的复选框,
$("[name='check_box_" + item.ID + "']").trigger('click');
count++;
}
});
if (rowArray.length == count) {
$("#cb_gridList").prop("checked", true);
}
}
},
//全选触发事件
onSelectAll: function (aRowids, status) {
var rowData = $(this).jqGridRowValue();//操作行
var pageRowData = $(this).getRowData();//当前列表所有行
if (status == true) {
//循环aRowids数组,将Id放入selectedIds数组中
saveData(rowData);
} else {
deleteIndexData(rowData, pageRowData);
}
},
//选中某行触发事件
onSelectRow: function (aRowids, status) {
var rowData = $(this).jqGridRowValue();//操作行
var pageRowData = $(this).getRowData();//当前列表所有行
if (status == true) {
if (rowData.length == $(this)[0].rows.length - 1) {
$("#cb_gridList").prop("checked", true);
}
saveData(rowData);
} else {
deleteIndexData(rowData, pageRowData);
}
}
});
}; //将Id放入selectedIds数组中
function saveData(obj) {
$.each(obj,
function (i, item) {
if (selectedIds.indexOf(item.ID) < 0)
selectedIds.push(item.ID);
});
} //将Id从selectedIds中删除 (仅删除当前页面列表中的数据)
function deleteIndexData(obj,pageObj) {
var rowDataIds = [];
var pageRowDataIds = [];
$.each(obj,
function (i, item) {
rowDataIds.push(item.ID);
});
$.each(pageObj,
function (i, item) {
pageRowDataIds.push(item.ID);
});
$.each(selectedIds,
function (i, sItem) {
if (pageRowDataIds.indexOf(sItem)>0 && rowDataIds.indexOf(sItem) < 0) {
selectedIds.splice(i, 1);
i--;
}
});
}

辅助代码:

$.fn.jqGridRowValue = function () {
var $grid = $(this);
var selectedRowIds = $grid.jqGrid("getGridParam", "selarrrow");
var json = [];
var rowData;
if (selectedRowIds != "") {
var len = selectedRowIds.length;
for (var i = 0; i < len; i++) {
rowData = $grid.jqGrid('getRowData', selectedRowIds[i]);
json.push(rowData);
}
} else {
if (!!$grid.jqGrid('getGridParam', 'selrow')) {
rowData = $grid.jqGrid('getRowData', $grid.jqGrid('getGridParam', 'selrow'));
json.push(rowData);
}
};
return json;
}

jqGrid 跨页选择以及回显的处理的更多相关文章

  1. 关于【vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据】的优化

    之前写的[vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据]这篇博客.功能虽然实现了相对应的功能.但是用起来很不爽.所以进行了优化. 备注:最近可能没时 ...

  2. vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据。

    业务的需要:我要对与会人员勾选,记录所选的与会人员,并且点击到别的页面上时也要记录所勾选的.第一次尝试,每次点击下一页数据都会清空.然后我就去element ui官网查看了api.实现如下: 在tab ...

  3. 选择company回显appname

    function showSupCompany() { var obj = {}; obj.label = ScompanyId.getSelectedLabel(); obj.value = Sco ...

  4. easyui datagrid 跨页选择

    $.fn.extend( memberList ,{ quickSearch : function() { var time1 = new Date(); /* this.datagrid.datag ...

  5. elementUITable的多选框:分页选择数据回显,分页保存选中的数据。

    <template> <el-table @selection-change="handleSelectionChange" :row-key="get ...

  6. JSP页面批量选择&全选操作&选择回显

    效果如下: js验证部分: 页面body部分: 附:控制器Controller中验证批量选择条件回显:

  7. jsp页面数据回显(select下拉选择框)

    1.静态变量方式: <!-- 实现select标签回显 --> 1.<select name="curStatus" value="${curStatu ...

  8. layui table 跨页记忆选择

    layui 表格功能目前默认不支持跨页记忆选择 下面来实现layui table跨页记忆选择实现 基于layui版本 1.4.5 表格跨页通用方法 //表格分页复选框 layui.define(['j ...

  9. Vue ElementUI Tree组件 回显问题(设置选择父级时会全选所有的子级,有此业务场景是不适合的)

    业务场景下有这样的问题 业务需求需要保存前端 半选节点 解决方案 let checked = this.$refs.menuTree.getCheckedKeys(); //此方法获取半选节点 let ...

随机推荐

  1. java语法糖---枚举

    java语法糖---枚举   在JDK5.0中提供了大量的语法糖,例如:自动装箱拆箱.增强for循环.枚举.泛型等.所谓“语法糖”就是指提供更便利的语法供程序员使用,只是在编译器上做了手脚,却没有提供 ...

  2. UOJ78 二分图最大匹配

    从前一个和谐的班级,有 nlnl 个是男生,有 nrnr 个是女生.编号分别为 1,…,nl1,…,nl 和 1,…,nr1,…,nr. 有若干个这样的条件:第 vv 个男生和第 uu 个女生愿意结为 ...

  3. Oracle结构控制语句

    --if语句 if [判断条件] then --条件满足执行的语句 end if; -- if ...else... if [判断条件] then ----条件满足执行的语句 else --不满足条件 ...

  4. Appium-关于appium的原生控件的 xpath 定位问题及常用方法

    最近遇到的项目,发现很多元素,都没有标明id.text.content-desc,classname中又有很多是相同,导致无法定位 第一,appium1.5及之后的版本废弃了name属性(如name= ...

  5. hbase_学习_00_资源帖

    一.官方资料 1.官网:http://hbase.apache.org/ 2.官方文档:HBase 官方文档中文版 二.apache软件下载基地 1. Apache Software Foundati ...

  6. codeforces 589G G. Hiring(树状数组+二分)

    题目链接: G. Hiring time limit per test 4 seconds memory limit per test 512 megabytes input standard inp ...

  7. Java IO 简记

    1.File 类: l  java.io.File类:文件和目录路径名的抽象表示形式,与平台无关 l  File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身.如果需要访问文件内 ...

  8. PS 滤镜— —Marble 效果

    clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ...

  9. 机器学习 Support Vector Machines 1

    引言 这一讲及接下来的几讲,我们要介绍supervised learning 算法中最好的算法之一:Support Vector Machines (SVM,支持向量机).为了介绍支持向量机,我们先讨 ...

  10. 【构建二叉树】02根据中序和后序序列构造二叉树【Construct Binary Tree from Inorder and Postorder Traversal】

    我们都知道,已知中序和后序的序列是可以唯一确定一个二叉树的. 初始化时候二叉树为:================== 中序遍历序列,           ======O=========== 后序遍 ...