1. 程式人生 > >Bootstrap Table 多頁時實現換頁選中且可回顯勾中功能

Bootstrap Table 多頁時實現換頁選中且可回顯勾中功能

一 背景

在工作中利用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 中文文件(完整翻譯版)

https://blog.csdn.net/rickiyeat/article/details/56483577