Presenter에서 Datagrid 열의 이벤트를 처리하는 방법은 무엇입니까?
문제
나는 사용하고있다 GWT MVP 다음 열의 이벤트를 처리하고 싶습니다. 데이터그리드 발표자로부터.에서 GWT 데이터그리드 쇼케이스 ...
// First name.
Column<ContactInfo, String> firstNameColumn =
new Column<ContactInfo, String>(new EditTextCell()) {
@Override
public String getValue(ContactInfo object) {
return object.getFirstName();
}
};
firstNameColumn.setSortable(true);
sortHandler.setComparator(firstNameColumn, new Comparator<ContactInfo>() {
@Override
public int compare(ContactInfo o1, ContactInfo o2) {
return o1.getFirstName().compareTo(o2.getFirstName());
}
});
dataGrid.addColumn(firstNameColumn, constants.cwDataGridColumnFirstName());
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
// Here I would like to call RPC methods
}
});
dataGrid.setColumnWidth(firstNameColumn, 20, Unit.PCT);
위의 예에서 이 코드는 보다 측면에서는 정말 예입니다.mvp 패턴으로 데이터베이스를 업데이트하려면 rpc 요청을 호출하면 됩니다.이 작업은 에서 수행할 수 없습니다. 보다 하지만 어떻게 설정해야 할지 모르겠어요 필드업데이터 내 발표자로부터.어떻게 알아낼 수 있습니까? 도와주세요.대단히 감사합니다.
해결책
이를 수행하는 방법에는 두 가지가 있습니다(MVP I 또는 MVP II 방식).
MVP 1 스타일:
http://www.gwtproject.org/articles/mvp-architecture.html
만들기 setter
너의 View
(즉. setFieldUpdater(FieldUpdater<ContactInfo, String>)
) 그건 FieldUpdater
그리고 이를 열에 추가합니다.로부터 Presenter
전화할 수 있습니다(단, view
보기에 대한 참조입니다).
증여자:
view.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
// Make the RPC call
}
});
MVP2 스타일:
http://www.gwtproject.org/articles/mvp-architecture-2.html
귀하의 참고자료가 있는 경우 View
당신의 Presenter
.그런 다음 함수를 호출할 수 있습니다. Presenter
.
보다:
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
getPresenter().onUpdate(info,value);
}
});
제휴하지 않습니다 StackOverflow