ここからjqueryプラグインDatatablesを使用しています。
問題は、本来の動作をしないことです。TableToolsに2つのボタンがあります。[すべて選択]と[なしを選択]の両方にデフォルトのコードがありますが、変更はありません。
また、行を複数選択可能にしました。これがデータテーブルの宣言のコードであり、重要なほとんどすべてのものです。
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');
} );
[すべて選択]をクリックするとすべてが選択され、[なしを選択]をクリックするとすべての選択が解除されます。ただし、それらのいくつかをクリックして選択し、[選択なし]を押しても何も起こりません。そして、[すべて選択]を押してから[なし]を選択すると、機能します。
私はデータテーブルの内部コードを調べており、Web全体からさまざまな解決策を試しました(同じ問題を抱えている人はあまり見たことがありませんが)。
必要になる可能性のあるその他の情報を要求します。あらゆる情報やヘルプに感謝します。ありがとうございました。