2013-03-14 94 views
0

我正在使用here的jquery插件Datatables。datatables的「select_none」按鈕不能按預期在多選模式下工作

問題是它不像它應該那樣行爲。我在TableTools中有兩個按鈕,Select all和Select none,兩者都有默認代碼,我沒有改變它們。

我也讓行可以多選。這裏是數據表聲明的代碼和幾乎所有重要的東西。

var oTable; 
var gaiSelected = []; 
oTable = $('#listeLigne').dataTable({ 
       "sDom": 'T', 
       "bJQueryUI": true, 
       "sPaginationType": "full_numbers", 
       "oLanguage": oLanguage, 
       "bLengthChange": false, 
       "iDisplayLength": -1, 
       "oTableTools": { 
        "sSwfPath" : "<?= _s("js/DataTables-1.9.4/extras/TableTools/media/swf/copy_csv_xls_pdf.swf") ?>", 
        "aButtons": [ 
         { 
          "sExtends": "collection", 
          "sButtonText": "Sélection", 
          "aButtons": [ 
           { 
            "sExtends": "select_all", 
            "sButtonText": "Toutes" 
           }, 
           { 
            "sExtends": "text", 
            "sButtonText": "Actives" 
           }, 
           { 
            "sExtends": "text", 
            "sButtonText": "Inactives" 
           }, 
           { 
            "sExtends": "text", 
            "sButtonText": "Suspendues" 
           }, 
           { 
            "sExtends": "select_none", 
            "sButtonText": "Aucune" 
           } 
          ] 
         }, 
         { 
          "sExtends": "collection", 
          "sButtonText": "Sauvegarder", 
          "aButtons": [ "csv", "xls", "pdf" ] 
         }, 
         { 
          "sExtends": "print", 
          "sButtonText": "Imprimer" 
         } 
        ] 
       }, 
       "fnRowCallback": function(nRow, aData, iDisplayIndex) { 
        if (jQuery.inArray(aData[0], gaiSelected) != -1) 
        { 
         $(nRow).addClass('row_selected'); 
        } 
        return nRow; 
       } 
      }); 

$('#listeLigne tbody tr').live('click', function() { 
       var aData = oTable.fnGetData(this); 
       var iId = aData[0]; 

       if (jQuery.inArray(iId, gaiSelected) == -1) 
       { 
        gaiSelected[gaiSelected.length++] = iId; 
       } 
       else 
       { 
        gaiSelected = jQuery.grep(gaiSelected, function(value) { 
         return value != iId; 
        }); 
       } 

       $(this).toggleClass('DTTT_selected'); 
      }); 

會發生什麼情況是,如果我點擊全選,它選擇他們所有,然後如果我點擊選擇無,它取消選擇一切。但是,如果我點擊其中的一部分並將它們選中,然後按下選擇無,則不會發生任何事情。然後如果我按下選擇所有,然後選擇它沒有工作。

我一直在尋找數據表的內部代碼,嘗試了很多不同的解決方案(即使我沒有看到許多人遇到同樣的問題)。

請求任何您可能需要的其他信息。 每一點信息和/或幫助表示讚賞。謝謝。

回答

0

最後我換成上面這個代碼:

oTable = $('#listeLigne').dataTable({ 
       "sDom": 'T', 
       "bJQueryUI": true, 
       "sPaginationType": "full_numbers", 
       "oLanguage": oLanguage, 
       "bLengthChange": false, 
       "iDisplayLength": -1, 
       "oTableTools": { 
        "sRowSelect": "multi", 
        "sSwfPath" : "<?= _s("js/DataTables-1.9.4/extras/TableTools/media/swf/copy_csv_xls_pdf.swf") ?>", 
        "aButtons": [ 
         { 
            "sExtends": "select_none", 
            "sButtonText": "Aucune" 
           }, 
         { 
          "sExtends": "collection", 
          "sButtonText": "Sélection", 
          "aButtons": [ 
           { 
            "sExtends": "select_all", 
            "sButtonText": "Toutes" 
           }, 
           { 
            "sExtends": "text", 
            "sButtonText": "Actives" 
           }, 
           { 
            "sExtends": "text", 
            "sButtonText": "Inactives" 
           }, 
           { 
            "sExtends": "text", 
            "sButtonText": "Suspendues" 
           }, 
           { 
            "sExtends": "select_none", 
            "sButtonText": "Aucune" 
           } 
          ] 
         }, 
         { 
          "sExtends": "collection", 
          "sButtonText": "Sauvegarder", 
          "aButtons": [ "csv", "xls", "pdf" ] 
         }, 
         { 
          "sExtends": "print", 
          "sButtonText": "Imprimer" 
         } 
        ] 
       } 
      }); 

$('#listeLigne tbody tr').live('click', function() { 
       var oTT = TableTools.fnGetInstance('listeLigne'); 
       oTT.fnSelect(this); 
      }); 

因此,基本上,第一個是使用谷歌搜索「的數據表中選擇行」,讓你做它的標準方式獲得的方法。但是因爲我使用的是TableTools,所以它不同。在這種情況下,必須使用TableTools的API。

請注意,.live功能不完整,因爲它只會選擇,但你明白我的意思。

DataTables的文檔非常完整,但很難找到有時甚至過時的東西。