2012-06-13 27 views
6

Tôi đang làm việc với jqGrid 4.3.2 trong trang web ASP.NET MVC 4, jQuery 1.7.2. Có một số nơi trong ứng dụng mà jqGrid được sử dụng. Thiết lập chung của tôi ngay bây giờ là tất cả chỉnh sửa được thực hiện cục bộ (loadonce: trueclientArray) với điều hướng nội tuyến và chỉnh sửa và tất cả dữ liệu lưới được đăng lên máy chủ khi gửi biểu mẫu qua cuộc gọi AJAX. Tôi đã gặp một số khó khăn với các chỉnh sửa hàng và tại những sự kiện họ đã cam kết. Bạn có thể xem các trang web (và nguồn, tổng số công việc đang tiến hành, được tốt đẹp) here. Nếu bạn thêm hoặc chỉnh sửa hàng và sau đó nhấp vào một nơi khác trên trang, chỉnh sửa hàng sẽ không được lưu. Người dùng phải nhấn phím enter ở đâu đó trong khi chỉnh sửa hàng để lưu hàng.jqGrid không lưu chỉnh sửa hàng nội tuyến

Tôi đã chạm vào điều này một chút trong this question, trong đó Oleg đủ tốt để trả lời. Có cách nào để thực hiện chỉnh sửa hàng khác không khi nhấn phím enter, như khi hàng mất tiêu điểm?

Trả lời

8

gì bạn có thể làm như sau:

  1. Trước hết bạn phải thiết lập restoreAfterSelect: false tùy chọn inlineNav. Tôi thấy rằng tùy chọn không được ghi lại, nhưng bạn có thể xem nó trong the source code. Không có cài đặt inlineNav sử dụng beforeSelectRow để gọi restoreRow (xem here).
  2. Thực hiện lưu hàng chỉnh sửa trước đó bên trong onSelectRow (xem mã từ the answer) hoặc bên trong của beforeSelectRow. Có lẽ việc sử dụng beforeSelectRow sẽ dễ dàng hơn vì hàng chỉnh sửa cuối cùng cần được lưu, có thể là hàng được chọn cuối cùng mà bạn có thể nhận được từ tùy chọn selrow vì giá trị chưa được thay đổi bên trong beforeSelectRow.
+0

Hoàn hảo! Cảm ơn, Oleg. Điều đó đã làm tôi thất vọng một thời gian. –

+0

@AJ .: Bạn được chào đón! – Oleg

+0

Oleg mặc dù đã hơn 2 năm, câu trả lời của bạn vẫn giúp tôi. đặt "restoreAfterSelect: false" là chìa khóa. cảm ơn –

1

Đối với bất kỳ ai đọc sách này vào năm 2016, chức năng này hiện đã được tích hợp vào jqGrid. Xem https://github.com/tonytomov/jqGrid/issues/785. Tại thời điểm viết jqGrid 5.1, tôi hy vọng chức năng này sẽ có sẵn từ phiên bản 5.2 trở đi. Hoặc bạn chỉ cần lấy mã mới nhất từ ​​GitHub.

Để sử dụng nó chỉ đơn giản là thiết lập các thuộc tính sau trên jqGrid của bạn:

... 
restoreAfterSelect: false, 
saveAfterSelect: true, 
... 

Có không còn là một nhu cầu để thực hiện giải pháp của riêng bạn.

Các vấn đề liên quan