2013-03-14 27 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的文档非常完整,但很难找到有时甚至过时的东西。

相关问题