DataTable表頭對不齊、添加參數等方法總結


tableData:

一:寫這篇博客是因為我在網上找到了改變行顏色,沒有找到改變td顏色的改變文章,也許好多朋友早就找到了或感覺這個太簡單,但不管怎樣我還是寫下了這篇沒有技術含量的一篇。

前提:引入依賴文件

<link href="__PUBLIC__/html/css/plugins/dataTables/dataTables.bootstrap.css" rel="stylesheet">


<script src="__PUBLIC__/html/js/plugins/dataTables/jquery.dataTables.js"></script>
<script src="__PUBLIC__/html/js/plugins/dataTables/dataTables.bootstrap.js"></script>

  

1.html內容:

  1).第一種:title寫到html中

  2)第二種:title動態寫入

  

    綁定數據時:

  

 2.js 綁定字段

   tips:這兩部分是我們頁面中使用改動比較多的部分。

3.給每一行或指定的字段設置顏色等等

這段代碼很簡單,當然代碼中的13要根據自己想要的效果去設置,但缺點是加載可能會延遲。

 

二、附上整體的代碼

<table id="staff" class="table table-bordered table-hover table-striped">
       <thead>
            <tr>
                <th>合同編號</th>
                 <th>供方名稱</th>
                  <th>供方地址</th>
                  <th>簽訂時間</th>
                  <th>簽訂地點</th>
                   <th>總金額</th>
                   <th>收貨人</th>
                   <th>交貨地點</th>
                   <th>收貨電話</th>
                   <th>結算方式</th>
                   <th>供方法定代表</th>
                   <th>供方代表電話</th>
                   <th>供方代表傳真</th>
                   <th>是否回傳合同附件</th>
                   <th>訂單狀態</th>
                   <th>審核狀態</th>
                 </tr>
             </thead>
          <tbody>
       </tbody>
</table>


 var table = $('#staff'). DataTable({
        ajax: {
            type: 'post',
            data: {
                flag: 1
            },
        },
        "scrollY": 440,
        "scrollX": false,
        "scrollCollapse": true,
        "destroy"      : true,
        "paging"       : true,
        "autoWidth"	   : false,
        "pageLength": 25,
        serverSide: true,
        // order:[[21, 'desc']],
        columns: [
            {searchable: true, data: 'contract_id'},
            {searchable: true, data: 'supplier_name'},
            {searchable: true, data: 'supply_address'},
            {searchable: true, data: 'signing_time'},
            {searchable: true, data: 'signing_place'},
            {searchable: false, data: 'total_amount'},
            {searchable: false, data: 'receiver'},
            {searchable: false, data: 'trading_location'},
            {searchable: true, data: 'receiving_phone'},
            {searchable: true, data: 'billing_method'},
            {searchable: true, data: 'supplier_representative'},
            {searchable: true, data: 'supplier_phone'},
            {searchable: true, data: 'supplier_fax'},
            {searchable: true, class:'suc' , data: 'is_return_contract', render: function (data){return ['否', '是'][+data]}},
            {searchable: true, data: 'order_status', render: function (data){return ['未生成訂單','已生成訂單','已生成訂單','已生成訂單','已生成訂單'][+data]}},
            {searchable: true, data: 'audit_status', render: function (data){return ['新提交', '不合格','審核通過'][+data]}}
        ],
        'fnRowCallback':function(nRow,aData,iDisplayIndex,iDisplayIndexFull){
            /*
                nRow:每一行的信息 tr  是Object
                aData:行 index
            */
            for(let key in nRow){
                var ADataStatus = nRow['childNodes'][13].innerText
                if(ADataStatus == '否'){
                    $(nRow['childNodes'][13]).css("color",'red')
                }else if(ADataStatus == '是'){
                    $(nRow['childNodes'][13]).css("color",'green')
                    
                }
            }

        },
     //或者是 (變色)
  "columnDefs" : [ //自定義列
  {
  "targets" : 7,
  "data" : "stock_out_status",
  render : function(data, type, row) {
  data = parseInt(data);
  // var arr = ['未處理', '出庫中', '出庫完畢','未對接訂單,無需處理'];
    var html = "";
  switch (data) {
  case 0 :
    html = "<span style='color:red'>";
      break;
  case 1 :
    html = "<span style='color:blue'>";
      break;
  case 2 :
    html = "<span style='color:green'>";
      break;
    default:
      html = "<span>";
    }
      html += stockOutMap[data] + "</span>";
    return html;
    }
  },
        oLanguage: {
            "oAria": {
                "sSortAscending": " - click/return to sort ascending",
                "sSortDescending": " - click/return to sort descending"
            },
            "LengthMenu": "顯示 _MENU_ 記錄",
            "ZeroRecords": "對不起,查詢不到任何相關數據",
            "EmptyTable": "未有相關數據",
            "LoadingRecords": "正在加載數據-請等待...",
            "Info": "當前顯示 _START_ 到 _END_ 條,共 _TOTAL_ 條記錄。",
            "InfoEmpty": "當前顯示0到0條,共0條記錄",
            "InfoFiltered": "(數據庫中共為 _MAX_ 條記錄)",
            "Processing": "<img src='../resources/user_share/row_details/select2-spinner.gif'/> 正在加載數據...",
            "Search": "搜索:",
            "Url": "",
            "Paginate": {
                "sFirst": "首頁",
                "sPrevious": " 上一頁 ",
                "sNext": " 下一頁 ",
                "sLast": " 尾頁 "
            }
        }
    })

三、效果截屏

  Datatable小總結

    1>只刷新當前頁表格:table.draw(false) ;

    2>只刷表格:table.ajax.reload();

    3>table請求路徑和參數:

    4>tablen內部分字段的映射另一種方法:

    5>點擊獲取datatable當前行的數據:

    6>關閉當前layer.open()頁面:

 // layer.open頁面關閉
var index=parent.layer.getFrameIndex(window.name);//獲取窗口索引
parent.layer.close(index)

    7>.實現layer.tips和達到一定字數出現...

{searchable: true, data: 'apply_reason',render:function (value,a, row) {
                if (value){
                    value =  value.replace(/\r\n|\n/g, '<br>')
                    var allData = table.data();
                    var index = allData.indexOf(row);
                    var className = 'complain_reason' + index;
                    var str = ''
                    if (value.length > 10){
                        str = value.slice(0, 10) + '...'
                    } else {
                        str = value
                    }
                    return "<span class='complain_reason' id='" + className + "'>" + str + "</span>"
                }
                return value
            }},

// layer tips
    $('#staff').on('mouseenter', 'td', function () {
        var that = $(this).children('span');
        if (that.hasClass('complain_reason') || that.hasClass('research') || that.hasClass('processes') || that.hasClass('processes_validity') || that.hasClass('liable')) {
            var data = table.cell(that.parents('td')).data()
            layer.tips(data, $(this), {time: 9999999})
        }

    })
    $('#staff').on('mouseleave', 'th', function () {
        layer.closeAll();
    })

     8> 添加額外的參數

fnServerParams: function (aoData) {
       aoData['source_kind'] = select.value
},

//其中aoData是請求體,不變。fnServerParams是專門添加額外參數用的,這個函數和columns平級放置,至於放在哪兒無所謂。

     9> 表頭對不齊

  表頭莫名的錯開了

  

 

  解決辦法:

#productionPlan{
      width: 100% !important;
}

  解決后的結果:

 

  

   官網地址:http://www.datatables.club/


免責聲明!

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



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