Старая тема, но у меня есть несколько материалов.
Чтобы автоматически генерировать столбец с флажком, а не делать это встроенным, добавьте это в определение столбца:
"aoColumnDefs": [ { "mRender": function (data, type, full) {
return '<input type="checkbox" id="id" class="class" value="' + data + '">'; }, "aTargets": [0] } ]
// Note: aTargets is the zero-indexed array determining placement of the checkbox column
// "aTargets": [0] gives you the first column (first from left)
Как и предполагал RUN-CMD, вы можете использовать TableTools для обработки выделения строк, но это не помогло, так как выбор / выделение всех строк отделен от проверки ввода строки. Тем не менее, это хороший визуальный усилитель.
Мы можем программно проверить флажок строки, добавив этот код в функцию _fnRowSelect () в TableTools.js (функция - строки 1079 - 1119 в моем файле):
// This marks them as selected
for ( i=0, len=data.length ; i<len ; i++ )
{
data[i]._DTTT_selected = true;
if ( data[i].nTr )
{
$(data[i].nTr).addClass( that.classes.select.row );
// Now if there's a checkbox somewhere in the row - we check it
$(data[i].nTr).closest("tr").find('input[type="checkbox"]').prop('checked', 'checked');
}
}
И пока мы редактируем этот файл, давайте создадим новую кнопку TableTools, которая переключает выбрать все / выбрать ни одного. Теперь нам не нужно привязывать обе функции к одной кнопке.
Мы создадим эту кнопку сразу после выбора всех и не выберем ни одной кнопки в TableTools.js (начиная со строки 2393 в моем файле):
/* Combines select_all and select_none buttons
* Default button text is a checkbox
* to strip button style and use a checkbox alone put this on native page:
* $(".select-all-master").removeClass("btn");
*/
"select_master": $.extend( {}, TableTools.buttonBase, {
"sButtonText": '<input type="checkbox" id="master_check" class="row_checks master_check" value="">',
"sButtonClass": "select-all-master",
"sAction": "div",
"sTag": "div",
"fnClick": function( nButton, oConfig ) {
var that = this;
var selected = false;
$("table tr").each(function(i) {
if ($(this).hasClass("active")) {
selected = true;
}
});
if (selected==false) {
that.fnSelectAll();
$("#master_check").prop('checked', 'checked');
}
if (selected==true) {
that.fnSelectNone();
$("#master_check").prop('checked', '');
selected = false;
}
}
} ),
Теперь мы можем применить наш переключатель select all / none, вызвав его, как любую кнопку TableTools. В наших таблицах инструментов init:
"aButtons": [ { "sExtends": "select_master","sToolTip": "Tool tip to display on checkbox hover" } ]
Также в вашем родном init для datatables вы можете использовать:
Javascript:
$(document).ready(function() {
$(".select-all-master").appendTo("thead#selectallbtn");
$(".select-all-master").removeClass("btn");
});
HTML:
<thead class="selectallbtn"></thead>
Если вы хотите удалить стиль кнопки и поместить его в заголовок таблицы в качестве обычного флажка all / none controller.
Если вы не используете загрузчик, подумайте над тем, чтобы сделать что-то подобное ( ссылка ) в вашем CSS, и код должен работать нормально.
Если все прошло гладко, результат должен быть примерно таким: http://screencast.com/t/c3ZDi0mmiGj
Самое большое удобство - нацеливание на флажок: свойство отмечено в любом месте строки, а не только при нажатии флажка. Полезно для пользователей с высоким разрешением или мобильного сенсорного удара / сенсорного запуска.