如何从Presenter处理Datagrid列的事件?
题
我正在使用 GWT MVP 我想处理列中的事件 数据网格 来自主持人。从 GWT DataGrid展示 ...
// 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方式):
MVP1风格:
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