2015-07-05 22 views
7

Khi tôi chỉnh sửa nội tuyến lưới, tôi có thể lưu hoặc hủy các thay đổi hàng lưới của mình. Tôi muốn cập nhật các mục cơ sở dữ liệu của tôi sau khi nút 'lưu' sẽ được đẩy (Cơ sở dữ liệu cơ sở đã thực hiện) Làm thế nào tôi có thể thực hiện nó?Cách nghe nút lưu hoặc gán một sự kiện sau khi được bấm vào Vaadin 7

đựng của tôi: BeanItemContainer<CategoryOfService> beansContainer;

Editing xem: enter image description here

Tất cả những gì tôi cần nó biết mà nghe tôi phải sử dụng. Tôi tìm thấy một số CommitHandler mà tôi có thể thêm bởi lớp EditorFieldGroup nhưng tôi không thể thực hiện nó đúng cách có lẽ có phải là một cách khác để giải quyết vấn đề.

+1

Trong Vaadin bạn thường có một thùng chứa xử lý các bản cập nhật cho cơ sở dữ liệu. Vì vậy, bạn sẽ phải xem xét các sự kiện của BeanItemContainer –

Trả lời

12

Có một cách để chụp nội tuyến Save nhấp vào lưới.

grid.getEditorFieldGroup().addCommitHandler(new FieldGroup.CommitHandler() { 
     @Override 
     public void preCommit(FieldGroup.CommitEvent commitEvent) throws  FieldGroup.CommitException { 
     //... 
     } 

     @Override 
     public void postCommit(FieldGroup.CommitEvent commitEvent) throws  FieldGroup.CommitException { 
     //... 
     } 
}); 

Sau khi nhấp vào Save cả hai phương thức preCommit và postCommit được gọi.

Hy vọng điều này sẽ giúp :)

+0

nhờ bạn đời. Tôi nhận thấy rằng trong trường hợp của tôi, tôi cần phải addCommitHandler bất cứ khi nào tôi gọi grid.removeAllItems() rồi grid.setValues ​​(). –

1

Lưới hiện không cung cấp cho bạn cách trực tiếp để thêm người nghe vào nút lưu và hủy cho trình chỉnh sửa nội tuyến, mặc dù đó là thứ có thể thay đổi trong Vaadin 7.6.

Như một giải pháp trước khi điều đó xảy ra, phương pháp CommitHandler mà bạn đã đề cập vẫn được cho là hoạt động. Bạn có thể tìm thấy một ví dụ cơ bản here. Nội dung của BeanItemContainer của bạn phải được cập nhật đầy đủ trong giai đoạn postCommit.

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