今天需要实现这样一个功能,有checkBox列表可供选择,要选择不分页之间的行并保存
具体实现
/**
- 表格操作
*/
//表格分页之前处理多选框数据
_responseHandler:function()(res) {
$.each(res.rows,function (i,row) {
row.checkStatus = $.inArray(row.id,selectionIds) != -1; //判断当前行的数据id是否存在与选中的数组,存在则将多选框状态变为true
});
return res;
},_list:function(){
var _this = this
var settings = {
url:Path.searchUrl,method:'GET',responseHandler:_this.responseHandler,//在渲染页面数据 之前执行的方法
height:Path.tbheight
};
bsTable.initTable("#boostrapTable",settings);
// 其它的boostrapTable参数已经封装在bsTable里面了,这里就不贴出来了
},/**- 获取选中ID
- @returns {*}
- @private
*/
_getIdSelections:function() {
// 用map进行过滤
return $.map($('#bootstrapTable').bootstrapTable('getSelections'),function (row) {
return row.id
});
},/** - 获取选中对象并显示
- @private
*/
getCheckParam:function(){
var union = function(array,ids){
$.each(ids,id) {
if($.inArray(id,array)==-1){
array[array.length] = id;
}
});
return array;
};
//取消选中事件操作数组
var difference = function(array,id) {
var index = $.inArray(id,array);
if(index!=-1){
array.splice(index,1);
}
});
return array;
};
var = {"union":union,"difference":difference};
var $table=$('#bootstrapTable');
//绑定选中事件、取消事件、全部选中、全部取消
$table.on('check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table',function (e,rows) {
var ids = $.map(!$.isArray(rows) ? [rows] : rows,function (row) {
return row.id;
});
var names = $.map(!$.isArray(rows) ? [rows] : rows,function (row) {
return row.name;
});
func = $.inArray(e.type,['check','check-all']) > -1 ? 'union' : 'difference';
selectionIds = func;
selectionNames =func;
});
}
};
return curd;
});
比较
常用的技巧
使用boostrapTable时候,选择表格的行,返回的rows有很多,这时候需要过滤出我们需要的字段,可以用
当然,如果需要对选出的数据有限制筛选,用filter过滤也不错
2);
});
console.log(filterResult);
//[3,3],返回所有数值都大于2的一个数组
相关讨论
如果想了解更多细节,可以看看GitHub上的issue
nofollow" target="_blank" href="https://github.com/wenzhixin/bootstrap-table/issues/917">如何保存用户的复选框问题
原文链接:https://www.f2er.com/bootstrap/37653.html