tôi đã cùng một vấn đề và tôi giả sử rằng tôi tìm thấy một giải pháp tốt để xử lý các hộp kiểm bấm ngay lập tức. Ý tưởng chính là kích hoạt phương thức editCell khi người dùng nhấp vào hộp kiểm không thể chỉnh sửa. Đây là mã:
jQuery(".jqgrow td").find("input:checkbox").live('click', function(){
var iRow = $("#grid").getInd($(this).parent('td').parent('tr').attr('id'));
var iCol = $(this).parent('td').parent('tr').find('td').index($(this).parent('td'));
//I use edit-cell class to differ editable and non-editable checkbox
if(!$(this).parent('td').hasClass('edit-cell')){
//remove "checked" from non-editable checkbox
$(this).attr('checked',!($(this).attr('checked')));
jQuery("#grid").editCell(iRow,iCol,true);
}
});
Ngoại trừ điều này, bạn nên xác định sự kiện cho lưới của bạn:
afterEditCell: function(rowid, cellname, value, iRow, iCol){
//I use cellname, but possibly you need to apply it for each checkbox
if(cellname == 'locked'){
//add "checked" to editable checkbox
$("#grid").find('tr:eq('+iRow+') td:eq('+iCol+') input:checkbox').attr('checked',!($("#regions").find('tr:eq('+iRow+') td:eq('+iCol+') input:checkbox').attr('checked')));
//trigger request
jQuery("#grid").saveCell(iRow,iCol);
}
},
afterSaveCell: function(rowid, cellname, value, iRow, iCol){
if(cellname == 'locked'){
$("#grid").find('tr:eq('+iRow+') td:eq('+iCol+')').removeClass('edit-cell');
}
},
Sau đó, hộp kiểm của bạn sẽ gửi yêu cầu chỉnh sửa mỗi khi người dùng nhấp vào nó.
Nguồn
2012-03-19 15:08:32
@Justin Great câu trả lời !! Cảm ơn, nếu đó là câu hỏi của tôi, tôi sẽ cho bạn đánh dấu. – Dan
Tuyệt vời! Tôi ước tôi có thể đánh dấu câu trả lời này là câu trả lời đã chọn! – Nigel
Bạn được chào đón! Đó là một sự xấu hổ câu hỏi này là quá cũ, nhưng hy vọng câu trả lời vẫn có thể hữu ích :) –