假设使用RPCproxy从DataStore检索数据,请在打开页面时使用ListStore填充到网格。
然后,有一个表单来添加一个实体,修改后它将在GXT网格中反映出新添加的行列表。
如何重新加载网格?我在Grid中尝试了.reconfigure()方法,但没有用。
答案 0 :(得分:4)
grid.getStore()getLoader()负载();
更新
首先,您必须在Proxy之前提取Grid,第二件事是更改RPC回调:
public class PagingBeanModelGridExample extends LayoutContainer {
//put grid Class outside a method or declare it as a final on the begin of a method
Grid grid = null;
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
RpcProxy> proxy = new RpcProxy>() {
@Override
public void load(Object loadConfig, final AsyncCallback> callback) {
//modification here - look that callback is overriden not passed through!!
service.getBeanPosts((PagingLoadConfig) loadConfig, new AsyncCallback>() {
public void onFailure(Throwable caught) {
callback.onFailure(caught);
}
public void onSuccess(PagingLoadResult result) {
callback.onSuccess(result);
//here you are reloading store
grid.getStore().getLoader().load();
}
});
}
};
// loader
final BasePagingLoader> loader = new BasePagingLoader>(proxy, new BeanModelReader());
ListStore store = new ListStore(loader);
List columns = new ArrayList();
//...
ColumnModel cm = new ColumnModel(columns);
grid = new Grid(store, cm);
add(grid);
}
}
答案 1 :(得分:1)
要将新数据显示到网格,您真的需要重新加载网格吗? 您可以使用新数据创建新的模型对象,并将其添加到ListStore。
假设您有一个扩展BaseModel的CommentModel和一个CommentStore为CommentStore的ListStore。
final ListStore<Commentmodel> commentStore = new ListStore<Commentmodel>();
//now call a rpc to load all available comments and add this to the commentStore.
commentService.getAllComment(new AsyncCallback<List<Commentmodel>>() {
@Override
public void onFailure(Throwable caught) {
lbError.setText("data loading failure");
}
@Override
public void onSuccess(List<Commentmodel> result) {
commentStore.add(result);
}
});
commentService
是AsyncService
。
现在,如果用户发表评论,只需使用新数据创建新的CommentModel
对象
CommentModel newData = new CommentModel('user name', 'message','date');
并将其添加到commentStore。
commentStore.add(newData);
希望这能为你服务。
但如果您确实需要重新加载整组数据,请再次调用该服务。在onSuccess
方法中,首先清除commentStore,然后添加结果。请记住,第一种方法更耗时。