2016-04-10 90 views
1

我有一個DataTable顯示分支的數據,並定義了兩個自定義按鈕:添加和更新。他們在JavaScript部分的頂部初始化選擇行時啓用自定義按鈕(默認禁用)

var buttons; 
var tblBranch; 

$.fn.dataTable.ext.buttons.add = { 
      className: 'button-add', 
      text: "Add Branch", 
      action: function (dt) { 
       onBtnAddClicked() 
      } 
     }; 

$.fn.dataTable.ext.buttons.update = { 
      className: 'button-update', 
      text: "Update", 
      action: function (dt) { 
       onBtnUpdateClicked() 
      } 
     }; 

我想禁用頁面加載編輯按鈕,只啓用它時,已經選擇了行點擊。問題是,我正在使用自定義按鈕,並且在datatables.net上找不到關於如何根據條件啓用/禁用它們的任何信息。到目前爲止,我已經試過是這樣的:

tblBranch = $("#tblBranches").DataTable({ 
     dom: 'Blfrtip', 
     buttons: { 
      buttons :[ 
       'add', 'update' 
      ] 
     } 
     select: true; 
}) 

$("#tblBranches tbody").on('click', 'tr', function() { 
     if (tblBranch.row(this).hasClass('selected')) { 
      $('button-update').removeClass("DTTT_disabled"); 
     } 
     else { 
      table.$('tr.selected').removeClass('selected'); 
      $('button-update').addClass("DTTT_disabled"); 
     } 
}); 

但我不知道是什麼代碼,以禁用的編輯按鈕時,頁面加載應該是這樣的,我已經看了herehereherehere

感謝您的任何指導。

回答

1

您提到的最後一個鏈接持有您正在尋找的解決方案。但是文檔有些模糊,猜想它需要一個可靠的例子。目前還不清楚你如何創建按鈕(你顯示了兩種方法),但下面是一個內聯示例,它也可以用於構造函數。簡單地給按鈕的一類,像.edit,它從開始設置爲已禁用:

var table = $('#example').DataTable({ 
    dom: 'Bfrtip', 
    select: true, 
    buttons: [ 
    { 
     text: 'Edit', 
     className: 'edit', 
     enabled: false, 
     action: function (e, dt, node, config) { 
     //do something 
     } 
    }, 
    { 
     text: 'Add', 
     action: function (e, dt, node, config) { 
     //do something 
     } 
    } 
    ] 
}) 

然後使用選擇插件selectdeselect事件更新.edit按鈕的enabled狀態:

$('#example').on('select.dt deselect.dt', function() { 
    table.buttons(['.edit']).enable(
    table.rows({ selected: true }).indexes().length === 0 ? false : true 
) 
}) 

demo - >https://jsfiddle.net/pmee6w2L/

+0

它完美的工作!非常感謝您的幫助! – Alycus