stary wątek, ale mam kilka składek.
Aby automatycznie wygenerować kolumny pole wyboru, zamiast robić to inline, dodać do swojej definicji kolumny:
"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)
Jak RUN-CMD zaproponował można użyć TableTools obsługiwać wiersz selekcji, ale nie zrobił” t help op, ponieważ wybieranie/zaznaczanie wszystkich wierszy jest niezależne od sprawdzania wiersza. Jednak jest to miły wzmacniacz wizualny.
Możemy sprawdzić programowo wyboru wiersz dodając ten kod do funkcji _fnRowSelect() w TableTools.js (funkcja linie 1079 - 1119 w moim pliku):
// 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');
}
}
A skoro już edycji ten plik, zróbmy nowy przycisk TableTools, który przełącza wybierz wszystko/wybierz brak. Teraz nie będziemy musieli wiązać obu funkcji na jednym przycisku.
Będziemy tworzyć ten przycisk po prawej wybrać wszystkie i wybierz przyciski równych w TableTools.js (zaczynając od linii 2393 w moim pliku):
/* 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;
}
}
}),
Teraz możemy zastosować nasz zaznacz wszystko/Brak przełącznika przez nazywając to tak, jak każdy przycisk TableTools. W naszym stole narzędzia procesu init:
"aButtons": [ { "sExtends": "select_master","sToolTip": "Tool tip to display on checkbox hover" } ]
Również w swoich rodzimych DataTables init, można użyć:
Javascript:
$(document).ready(function() {
$(".select-all-master").appendTo("thead#selectallbtn");
$(".select-all-master").removeClass("btn");
});
html:
<thead class="selectallbtn"></thead>
Jeśli chcesz usunąć styl przycisku i umieść go w nagłówku tabeli jako normalny checkbox all/none controller. Jeśli nie używasz bootstrap, rozważ zrobienie czegoś takiego (link) w swoim CSS, a kod powinien działać poprawnie.
Pod warunkiem, wszystko poszło gładko dla ciebie, wynik powinien być czymś tak: http://screencast.com/t/c3ZDi0mmiGj
Największy wygoda jest kierowana pole wyboru: sprawdzone nieruchomości z dowolnego miejsca wewnątrz wiersza, a nie tylko na kliknięcie pola wyboru. Przydatne dla użytkowników wysokiej rozdzielczości lub mobilnych touchpunch/touchstart.
Oczywiście jest to możliwe i istnieje kilka metod jego osiągnięcia. Zobacz przykład tutaj: http://screencast.com/t/c3ZDi0mmiGj Co więcej, nie musisz niczego aktualizować na serwerze, dopóki nie przypiszesz akcji do zaznaczonych pól (np. Usuń wiersze, zmień wartość wiersza itp.) Oczywiście niektóre akcje po stronie klienta, takie jak drukowanie, będą dostępne bez wykonywania żadnych żądań serwera. – DrewT