需求:使用bootstrap table后台分页,但是前台翻页后,需要记录上一次勾选的数据。
如果返回之前的页面,需进行反显。
附部分代码:
1. table添加监听,获取选中行数据;
$('#carTable') .on( 'uncheck.bs.table check.bs.table check-all.bs.table uncheck-all.bs.table', function (e, rows) { var datas = $.isArray(rows) ? rows : [rows]; // 点击时获取选中的行或取消选中的行 examine(e.type, datas); // 保存到全局 Array() 里 } );
2. 根据选中或取消操作对数组进行格式化;
var overAllIds = new Array(); //全局数组
function examine(type, datas) { if (type.indexOf('uncheck') == -1) { $.each(datas, function (i, v) { // 添加时,判断一行或多行的 id 是否已经在数组里 不存则添加 overAllIds.indexOf(v.cVin) == -1 ? overAllIds.push(v.cVin) : -1; }); } else { $.each(datas, function (i, v) { overAllIds.splice(overAllIds.indexOf(v.cVin), 1); //删除取消选中行 }); } }
3. 根据数组数据进行判断是否选中;
{
checkbox: true,
formatter: function (i, row) { // 每次加载 checkbox 时判断当前 row 的 id 是否已经存在全局 Set() 里
if ($.inArray(row.cVin, overAllIds) != -1) {// 判断数组里有没有这个 id
return {
checked: true// 存在则选中
}
}
}
}
注意:数组里存储行数据中的主键(唯一标识符),不可重复!
附bootstrap table监听事件:
click-row:行点击事件,callback获取4个参数 : e 事件对象 , row 当前行数据对象 , ele 当前单元格对象 , field 当前单元格的field值。(row是数据对象,ele是DOM对象)
dbl-click-row:行双击事件,callback获取4个参数 : e 事件对象 , row 当前行数据对象 , ele 当前单元格对象 , field 当前单元格的field值。(row是数据对象,ele是DOM对象)
check:单个checkbox选中事件,callback获取3个参数 : e 事件对象 , row 当前行数据对象 , ele 当前单元格对象。(row是数据对象,ele是DOM对象)
uncheck:单个checkbox取消选中事件,callback获取3个参数 : e 事件对象 , row 当前行数据对象 , ele 当前单元格对象。(row是数据对象,ele是DOM对象)
check-all:全选checkbox事件,callback获取2个参数 :e 事件对象 ,dataArr 选中行数据对象集合(dataArr的对象是数据对象)
uncheck-all:全选checkbox取消事件,callback获取2个参数 :e 事件对象 ,dataArr 选中行数据对象集合(dataArr的对象是数据对象)
sort:列排序事件,callback获取3个参数 : e 事件对象 , field 当前列的field值 , order 当前列是升序还是降序(enum值,desc , asc)。
load-success:数据加载成功事件,callback获取2个参数:e 事件对象 , data 成功加载的数据对象集合。(dataArr的对象是数据对象)
load-error:数据加载失败事件,callback获取2个参数:e 事件对象 , status 失败状态码。
column-switch:显示隐藏列选择事件,callback获取3个参数:e 事件对象 ,field 当前列的field值 ,checked 是否勾选(bool值)。
page-change:翻页事件,callback获取3个参数 : e 事件对象 ,number 当前页码(不是下标,是页码) ,size 当前页数据条数。
search:搜索事件,callback获取2个参数 : e 事件对象 ,text 搜索框输入内容。