集成JQuery.DataTable常見問題記錄

最近用網(wǎng)上一些開源免費的Bootstrap模板做開發(fā)的時候發(fā)現(xiàn)很多模板集成的table插件都用的是jquery的DataTable插件,讀了一下官方文檔發(fā)現(xiàn)不太好理解(估計是蠢的原因)。想著寫篇快速上手的文章供大家參考,發(fā)現(xiàn)好像也沒太大必要(官方有詳細文檔,讀起來需要花點時間),還是記錄一下開發(fā)中遇到的問題就算了(方便自己以后忘了回來看,哈哈)。

先上官方網(wǎng)站&中文網(wǎng)

1. 指定返回json中數(shù)據(jù)源data& recordsTotal & recordsFiltered

DataTable 要求服務(wù)器返回的json里面必須含有特定的字段名(具體看文檔),但是你后臺返回的字段名跟它不對應(yīng),那就可以在option中的ajax中的dataSrc中配置,下面是參考代碼

$('#tableId').DataTable( {
        ......
        ajax:  {
          ......
          dataSrc: function(json) {
            json.recordsTotal = json.totalElements;
            json.recordsFiltered = json.totalElements;
            //必須返回是dataSrc數(shù)據(jù)!??!
            return json.content;
          }
        }
        ......
      });

2. 修改請求參數(shù),添加查詢條件(如:pageNum,pageSize)

DataTable 默認發(fā)送參數(shù)里面,分頁大小是length,沒有頁碼,有頁的開始位置(類似hibernate里面offSet)start
如果你是使用像Spring提供的分頁類Page的話,分頁參數(shù)就是size分頁大小,page頁碼,那么默認的參數(shù)就不符合你的要求了,這時候可以類似上述例子1中那樣修改請求參數(shù)

$('#tableId').DataTable( {
          ......
          data: function ( d ) {
            // 每次reload都會運行此方法
            //添加符合你后臺分頁要求的參數(shù)
            d.size = d.length;
            d.page = d.start/d.length;
            //添加查詢條件
            //動態(tài)的form條件<form id="form-params">......</form>
            var params = $('#form-params').serializeArray();
            for (var i=0;i<params.length;i++) {
              d[params[i].name] = params[i].value;
            }
          }
          ......
      });

3. 自定義工具欄

最好事先讀dom的解釋,這里不詳細解釋

$('#tableId').DataTable( {
        ......
        //定義DataTable的Dom構(gòu)成
        dom: '<"toolbar">frtip'
        ......
      });
//拼接按鈕
$("div.toolbar").html('<button type="button" onclick="alert (\'button click\')"> ');

4. 自定義ajax function

$('#tableId').DataTable( {
        ......
        //定義ajax function
        //data - 查詢參數(shù)
        //callback - datatable回調(diào)函數(shù)callback(data),必須運行才能顯示數(shù)據(jù)
        //settings - datatable設(shè)置
        ajax: function(data, callback, settings) {
          // paga param
          data.size = data.length;
          data.page = data.start/data.length;
          //query params
          var params = $('#form-params').serializeArray();
          for (var i=0;i<params.length;i++) {
            data[params[i].name] = params[i].value;
          }
          //sort params
          var columns = data.columns;
          var orders = data.order;
          var sort = '';
          for (var i=0;i<orders.length;i++) {
            var order = orders[i];
            sort += sort==''?'':'&';
            sort += 'sort='+columns[order.column].data+','+order.dir;
          }

          $.ajax({
            url : ctx + "/dc/taskLog/doQuery.action?"+sort,
            type: 'get',
            data : data,
            dataType:'json',
            success: function(data) {
              data.recordsTotal = data.totalElements;
              data.recordsFiltered = data.totalElements;
              data.data = data.content;
              callback(data);
            }
          });
        }
        ......
      });

有什么問題可以一起交流學(xué)習。賞面的也可以請作者喝杯java,哈哈。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容