Cũ chủ đề nhưng tôi có một vài đóng góp.
Để tự động tạo ra một cột checkbox chứ không phải làm nội tuyến này, thêm này để định nghĩa cột của bạn:
"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)
Như RUN-CMD gợi ý bạn có thể sử dụng TableTools để xử lý hàng lựa chọn, nhưng điều này didn' t giúp op vì việc chọn/đánh dấu tất cả các hàng tách biệt với việc kiểm tra đầu vào của hàng. Tuy nhiên, nó là một chất tăng cường thị giác tốt đẹp.
Chúng tôi lập trình có thể kiểm tra hộp kiểm của hàng bằng cách thêm mã này vào _fnRowSelect() chức năng trong TableTools.js (chức năng là dòng 1079-1119 trong tập tin của tôi):
// 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');
}
}
Và trong khi chúng tôi đang chỉnh sửa tập tin này, chúng ta hãy thực hiện một nút TableTools mới mà Toggles chọn tất cả/không chọn. Bây giờ chúng ta sẽ không phải ràng buộc cả hai hàm vào một nút.
Chúng tôi sẽ tạo ra nút này ngay sau khi chọn tất cả và chọn nút none trong TableTools.js (bắt đầu tại dòng 2393 trong tập tin của tôi):
/* 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;
}
}
}),
Bây giờ chúng ta có thể áp dụng chọn tất cả/không chuyển đổi của chúng tôi bằng gọi nó như là bất kỳ nút TableTools nào. Trong bảng của chúng tôi cụ init:
"aButtons": [ { "sExtends": "select_master","sToolTip": "Tool tip to display on checkbox hover" } ]
Cũng trong datatables mẹ đẻ của bạn init bạn có thể sử dụng:
Javascript:
$(document).ready(function() {
$(".select-all-master").appendTo("thead#selectallbtn");
$(".select-all-master").removeClass("btn");
});
html:
<thead class="selectallbtn"></thead>
Nếu bạn muốn loại bỏ phong cách nút và đặt nó vào tiêu đề bảng của bạn như một hộp kiểm bình thường tất cả/không có bộ điều khiển. Nếu bạn không sử dụng bootstrap, hãy cân nhắc thực hiện điều gì đó như thế này (link) trong CSS và mã của bạn sẽ hoạt động tốt.
cung cấp tất cả mọi thứ diễn ra suôn sẻ cho bạn, kết quả sẽ được cái gì này: http://screencast.com/t/c3ZDi0mmiGj
tiện lớn nhất được nhắm mục tiêu vào hộp kiểm: kiểm tra tài sản từ bất cứ nơi nào bên trong liên tiếp, không chỉ trên cách nhấn vào hộp kiểm. Hữu ích cho người dùng có độ phân giải cao hoặc touchpunch/touchstart di động.
Tất nhiên điều này là có thể, và có một số phương pháp để đạt được nó. Xem examplee ở đây: http://screencast.com/t/c3ZDi0mmiGj Hơn nữa, bạn không phải cập nhật bất cứ thứ gì trên máy chủ cho đến khi bạn gán một hành động cho các hộp đã chọn (ví dụ xóa hàng, thay đổi giá trị hàng, v.v.) tất nhiên một số hành động mà các hành động phía máy khách như in sẽ có sẵn mà không cần thực hiện bất kỳ yêu cầu nào của máy chủ. – DrewT