實際開發場景中,需要勾選不同 頁面的數據,如下圖,常規的是如果在某一頁中勾選了數據,那么切換頁面后,你之前勾選的數據就消失了,如果想記錄之前的數據,並且可操作(勾選進數組,反勾選出數組)
1.定義數據(說文雅點設計數據結構)
var table_data = new Array();//存放初始化加載的10條數據(我的分頁一頁10條數據,既存放當前頁的這幾條數據) var ids = new Array();//用於存放目標記錄的id數組
2.書寫checkbox,監聽checkbox
adapterCheckbox:function{
table.on('checkbox(training-list)', function (obj) { if (obj.checked == true) { if (obj.type == 'one') {//勾選單條 ids.push(obj.data.id); } if (obj.type == 'all') {//勾選全部 for (var i = 0; i < table_data.length; i++) { ids.push(table_data[i].id);//table_data 在步驟3中初始化請注意這塊 } } } else { if (obj.type == 'one') { for (var i = 0; i < ids.length; i++) { if (ids[i] == obj.data.id) { ids = ids.filter(function (item) { return item != ids[i]; }); } } } else { for (var i = 0; i < ids.length; i++) { for (var j = 0; j < table_data.length; j++) { if (ids[i] == table_data[j].id) { ids = ids.filter(function (item) { return item != ids[i]; }); } } } } } console.log(ids); });
}
3.初始化 table_data 設置checkbox的回顯
table.render({ //------------------------------------------常規table渲染 size: 'sm', //設置表頭 cols: [[ {type: 'checkbox', fixed: 'left'}, {field: 'name', title: '虛擬機名稱'}, {field: 'virtualImageTag', title: '鏡像系統'}, {field: 'virtualType', title: '平台類型'}, {field: 'createTime', title: '創建時間'} ]], url: 'virtualMachine/queryListPage', method: 'post', where: Page.whereAges, request: { pageName: "current", //頁碼的參數名稱,默認:page limitName: 'size' //每頁數據量的參數名,默認:limit }, response: { statusCode: 200, //成功的狀態碼,默認:0 msgName: 'message' //狀態信息的字段名稱,默認:msg }, elem: '#training-list', page: { elem: 'pageDiv', limit: 10, limits: [10, 20, 30, 40, 50] }, contentType: "application/json", done: function (res, curr, count) {//-----------------跟table的使用是一樣的,只是在done做了一些操作 table_data = res.data;//初始化數據;此處接收的是當前頁的這10條數據 if (ids.length > 0) { for (var i = 0; i < ids.length; i++) { for (var j = 0; j < table_data.length; j++) { if (ids[i] == table_data[j].id) {//匹配上就設為選中 //回顯checkbox $('.layui-table tr[data-index=' + j + '] input[type="checkbox"]').attr("checked", "checked"); form.render('checkbox'); } } } } //操作選中的行 Page.adapterCheckbox(); }
});