Bootstrap Table 多頁時實現換頁選中且可回顯勾中功能
阿新 • • 發佈:2019-01-06
一 背景
在工作中利用Bootstrap Table 做資料列表時可選資料,但是換頁時上一頁資料不能攜帶和回顯,只能操作選中當前頁資料,造成不好的使用者體驗
二 解決方案
1)利用Bootstrap Table 提供的API監聽選中與取消選中
定義全域性陣列接收選中的行資訊
var select_rows = new Array();
// 選中行時觸發 $('#certificate_choose_table').on('check.bs.table', function (e, row) { if (row != undefined) { select_rows.push(row); } }); // 取消選中行時觸發 $('#certificate_choose_table').on('uncheck.bs.table', function (e, row) { if (row != undefined) { if (select_rows.length > 0) { for (var n = 0; n < select_rows.length; n++) { if (select_rows[n] != undefined && row.ODT_ID == select_rows[n].ODT_ID) { delete select_rows[n]; // 刪除元素並已undefined代替(方法固有) } } } } // 過濾掉因為delete 刪除產生的undefined元素 select_rows = select_rows.filter(function(item){ return item!=undefined; }); // console.log(select_rows); }); 備註:這裡的js陣列刪除方法delete 刪除時回保持原有長度但是原始刪除位置變為undefined元素,需要去掉可使用js的filter 也可以使用jquery提供的jQuery.grep( array, function [, invert ] ),返回通過指定函式過濾後的結果陣列;例如: //function 裡面的i為角標 var arr1 =[1,2,3,null,undefined]; var arr=$.grep(arr1,function(n,i){return n;},false); console.info(arr);//[1, 2, 3];過濾掉了null和undeifind
2).再在每頁table載入完成資料時onLoadSuccess看是否包含有已經選中的行資訊有就手動選中(封裝到方法fn_success()裡面了)
最後定義的select_rows陣列就包含了選中的資料,並且可以回顯到任何一頁
備註:本文僅僅是提供思路,有不妥之處還請指正;
另附上Bootstrap Table 中文文件(完整翻譯版)