Tôi biết câu hỏi này là loại bụi, nhưng gần đây tôi đã có một nhu cầu cho chức năng này và tìm thấy những gì tôi xem xét một cách sạch sẽ hơn nhiều để làm điều đó.
Thay vì đính kèm sự kiện vào từng hộp kiểm, tại sao không sử dụng các sự kiện onSelectRow
và onSelectAll
của jqGrid? Khi một hàng được chọn, hãy kiểm tra xem danh sách các hàng đã chọn của chúng tôi có bao gồm hàng này không (dựa trên id). Thêm nó vào danh sách nếu nó không có và đã được chọn, loại bỏ nó nếu nó đã có và không còn được chọn. Nếu tất cả các hàng được chọn, hãy lặp qua chúng.
var $grid = jQuery("#myGrid");
var updateIdsOfSelectedRows = function (id, isSelected) {
var contains = idsOfSelectedRows.contains(id);
if (!isSelected && contains) {
for(var i=0; i<idsOfSelectedRows.length; i++) {
if(idsOfSelectedRows[i] == id) {
idsOfSelectedRows.splice(i, 1);
break;
}
}
}
else if (!contains) {
idsOfSelectedRows.push(id);
}
};
$grid.jqGrid({
....
onSelectRow: function(rowid, status){
updateIdsOfSelectedRows(rowid, status);
},
onSelectAll: function (aRowids, status) {
var i, count, id;
for (i = 0, count = aRowids.length; i < count; i++) {
id = aRowids[i];
updateIdsOfSelectedRows(id, status);
}
},
....
)};
Hy vọng điều này sẽ giúp người khác tìm kiếm giải pháp.