layui表格進行所有頁全選


我們在使用layui表格的時候,會使用到layui表格的分頁,即一頁獲取多少條數據,這些都是通過后台接口來獲取的數據,要想實現所有頁全選理論上是不可能的,因為后面的數據也是通過后台獲取的,所以我們只能使用取巧的方法來實現所有頁全選

第一步:表格生成時,定義全局變量來存儲每次請求的所有數據(即當前頁數據),我這里通過idsAll來存儲所有:

 

 

 第二步,自定義復選框按鈕來實現全選功能:

$("#selectAllPagesCheck").change(function () {//自定義復選框變化
  if ($('#selectAllPagesCheck')[0].checked) {//判斷是全選還是全取消
    for (var j = 0; j < idsAll.length; j++) {
      idsAll[j]["LAY_CHECKED"] = 'true';
      var index = idsAll[j]['LAY_TABLE_INDEX'];
      //如果你的頁面還有第二個表格,就是.list2
      $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);//jquery里id為鎖定生成表格的范圍,防止多表相互影響
      $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().addClass(
        'layui-form-checked');
    }
    // 獲取表格勾選狀態,全選中時設置全選框選中
    let checkStatus = table.checkStatus('resourceQueryTable');//此處是為了當全選后,需要讓layui表格自帶的當前頁全選的狀態也選中或者取消
    if (checkStatus.isAll) {
      $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true);
      $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass(
        'layui-form-checked');
    }
    qualityjson.allPage = true;
  } else {
    for (var j = 0; j < idsAll.length; j++) {
      idsAll[j]["LAY_CHECKED"] = 'false';
      var index = idsAll[j]['LAY_TABLE_INDEX'];
      //如果你的頁面還有第二個表格,就是.list2
      $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', false);
      $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().removeClass(
        'layui-form-checked');
    }
    // 獲取表格勾選狀態,全選中時設置全選框選中
    let checkStatus = table.checkStatus('resourceQueryTable');
    debugger;
    if (checkStatus.isAll) {
      $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', false);
      $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').next().removeClass(
        'layui-form-checked');
    }
  }
})

第三步:當表格生成后,在done回調里進行表格復選框的選中

 var len = res.data.length;//當前頁面數據長度
          var chooseNum = 0; //記錄當前頁選中的數據行數
          if ($('#selectAllPagesCheck')[0].checked) {//每次換頁后判斷是否全選,全選的話就讓復選框全選中
            for (var i = 0; i < res.data.length; i++) {
              for (var j = 0; j < idsAll.length; j++) {
                if (res.data[i].gid == idsAll[j].gid) {
                  res.data[i]["LAY_CHECKED"] = 'true';
                  var index = res.data[i]['LAY_TABLE_INDEX'];
                  //如果你的頁面還有第二個表格,就是.list2
                  $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
                  $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().addClass(
                    'layui-form-checked');
                  chooseNum++;
                }
              }
            }
          } else {
            for (var i = 0; i < res.data.length; i++) {
              for (var j = 0; j < ids.length; j++) {//ids是全局寫的單個選中數據的保存
                if (res.data[i].gid == ids[j].gid) {
                  res.data[i]["LAY_CHECKED"] = 'true';
                  var index = res.data[i]['LAY_TABLE_INDEX'];
                  //如果你的頁面還有第二個表格,就是.list2
                  $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
                  $('#resourceQueryResultDiv .layui-table-fixed-l tr[data-index=' + index + '] input[type="checkbox"]').next().addClass(
                    'layui-form-checked');
                  chooseNum++;
                }
              }
            }
          }
          // 獲取表格勾選狀態,全選中時設置全選框選中
          let checkStatus = table.checkStatus('resourceQueryTable');
          if (checkStatus.isAll) {
            $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true);
            $('#resourceQueryResultDiv .layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass(
              'layui-form-checked');
          }

以上就可以實現所有頁全選,若有不懂可以評論留言

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM