@Erik đã đưa tôi đi đúng hướng trên con đường này. Giải pháp của anh ta hoạt động, nhưng vẫn giữ nguyên giao diện người dùng xác nhận popup giả hiện có mà tôi muốn tránh.
Nó cũng không tận dụng các dịch vụ mà JqGrid ASP.NET component cung cấp. Các thành phần thực sự chăm sóc của tất cả các hoạt động CRUD miễn là nó có dây lên đến một nguồn dữ liệu được cấu hình đúng (ObjectDataSource, SqlDataSource, vv).
Phần còn thiếu của tôi là cơ chế đằng sau các hoạt động CRUD của thành phần. Bằng cách chọc xung quanh với Fiddler tôi đã có thể thấy rằng nó viết các dữ liệu liên quan đến cùng một trang, với ClientID của đối tượng jqGrid trong chuỗi truy vấn:
MyPage.aspx?jqGridID=ctl00_ctl00_Content_Content_MyJqGrid
Đối xóa, nội dung của các POST như @ Erik mô tả:
oper=del&id=18
vì vậy, tôi đã có thể lặp lại trong các hoạt động trên của riêng tôi vì vậy mà tôi giữ kiểm soát hoàn toàn của toàn bộ quá trình:
$(".DeleteButton", grid).click(function(e) {
var rowID = getRowID(this);
$(grid).setSelection(rowID, false);
if (confirm('Are you sure you want to delete this row?')) {
var url = window.location + '?jqGridID=' + grid[0].id;
var data = { oper: 'del', id: rowID };
$.post(url, data, function(data, textStatus, XMLHttpRequest) {
$(grid).trigger("reloadGrid");
});
} else {
$(grid).resetSelection();
} // if
}); // click
getRowID = function(el) {
return $(el).parents("tr").attr("id");
};
Nguồn
2010-03-03 21:17:11
@Erik - Cảm ơn bạn đã chỉ cho tôi đi đúng hướng. Thành phần ASP.NET thực sự thực hiện xóa cho bạn nếu bạn có nó nối với một cấu hình đúng SqlDataSource (nó cũng sẽ chăm sóc cập nhật, chèn và chọn). –