Gwt 在GXT网格中重新加载数据冻结
基于GXT showcase示例“Paging BeanModel Grid”,我尝试在对数据源进行修改后重新加载网格。我这样定义加载程序:Gwt 在GXT网格中重新加载数据冻结,gwt,load,grid,freeze,gxt,Gwt,Load,Grid,Freeze,Gxt,基于GXT showcase示例“Paging BeanModel Grid”,我尝试在对数据源进行修改后重新加载网格。我这样定义加载程序: final BasePagingLoader<PagingLoadResult<ModelData>> loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader()); loader.s
final BasePagingLoader<PagingLoadResult<ModelData>> loader =
new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader());
loader.setRemoteSort(true);
我的分页工具栏只是冻结并被禁用,网格也冻结并显示似乎是加载掩码的内容
我尝试添加一些事件来强制在没有运气的情况下重新加载:
grid.addListener(Events.Attach, new Listener<GridEvent<ModelData>>() {
public void handleEvent(GridEvent<ModelData> be) {
loader.load();
}
});
grid.addListener(Events.Attach,new Listener()){
公共无效handleEvent(GridEvent be){
loader.load();
}
});
我也尝试过使用重新配置(store,cm)选项,结果是一样的
有什么帮助吗
谢谢,
Jordi.加载栏变灰,以便您可以看到它正在工作,网格也可能有加载消息。工作的代码是服务器,可能正在准备项目 在调用开始和结束时,在服务器代码(rpcservlet)中设置日志消息,以查看它们运行所需的时间。根据你问题中的信息,这可能是实际“冻结”发生的地方
在这段时间之后,浏览器可能会暂停,但在这种情况下,加载循环将停止移动。我认为网格控制器上有一个错误: 代码详细信息:
private final BasePagingLoader<PagingLoadResult<ModelData>> loader;
private Grid<ModelData> grid;
[...]
public ListUsersView(RpcProxy<PagingLoadResult<UserTableEntryBean>> proxy) {
// Create loader
loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader());
loader.setRemoteSort(true);
// Create store
store = new ListStore<ModelData>(loader);
FlowLayout layout = new FlowLayout();
layout.setMargins(new Margins(3, 0, 0, 0));
this.setLayout(layout);
final PagingToolBar toolBar = new PagingToolBar(50);
toolBar.bind(loader);
List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
columns.add(new ColumnConfig(UserTableEntryBean.Fields.username.name(), "Username", 100));
columns.add(new ColumnConfig(UserTableEntryBean.Fields.email.name(), "E-mail", 200));
ColumnConfig date = new ColumnConfig(UserTableEntryBean.Fields.creationDate.name(), "Creation date", 100);
date.setDateTimeFormat(DateTimeFormat.getFormat("dd/MM/y"));
columns.add(date);
ColumnModel cm = new ColumnModel(columns);
grid = new Grid<ModelData>(store, cm);
grid.setLoadMask(true);
grid.setBorders(true);
grid.setAutoExpandColumn(UserTableEntryBean.Fields.creationDate.name());
[...]
}
public boolean refreshTable() {
return loader.load();
}
private final BasePagingLoader;
私有电网;
[...]
公共列表用户视图(RpcProxy代理){
//创建加载器
loader=newbasePagingLoader(代理,newbeanModelReader());
loader.setRemoteSort(true);
//创建存储
存储=新列表存储(加载器);
FlowLayout=新的FlowLayout();
布局。设置页边距(新页边距(3,0,0,0));
这个.setLayout(布局);
最终分页工具栏=新分页工具栏(50);
工具栏绑定(加载程序);
列表列=新的ArrayList();
添加(新的ColumnConfig(UserTableEntryBean.Fields.username.name(),“username”,100));
添加(新的ColumnConfig(UserTableEntryBean.Fields.email.name(),“E-mail”,200));
ColumnConfig date=new ColumnConfig(UserTableEntryBean.Fields.creationDate.name(),“创建日期”,100);
date.setDateTimeFormat(DateTimeFormat.getFormat(“dd/MM/y”);
列。添加(日期);
ColumnModel cm=新ColumnModel(列);
网格=新网格(存储,厘米);
grid.setLoadMask(true);
网格。命令(真);
setAutoExpandColumn(UserTableEntryBean.Fields.creationDate.name());
[...]
}
公共布尔刷新表(){
返回loader.load();
}
服务器代码工作正常。实际上,这两种情况下的调用完全相同。我用firebug仔细检查了RPC响应,它包含有效数据。没有服务器或JS例外。你可能需要发布更多的代码-有些东西与你基于代码的示例不同,它们工作正常。如果不是服务器,并且服务器正在工作并发送良好的数据,那么它必须是客户端。如果加载动画仍在工作,则数据被某些东西忽略,如果数据没有旋转,则客户端被卡在某个地方的循环中,并且实际上被冻结。问题已解决:RPC中存在异常,代理silents是,而我在跟踪中没有看到它。GXT应该是不厌其烦的。谢谢。LoadException侦听器应该向您指出该问题-该事件是否未触发,或者您是否未在侦听它?发出异常通常有业务逻辑原因,因此记录每个异常没有意义,而是检查firebug、服务器日志和LoadException事件。尝试传递分页偏移量和限制,如soloader.load(0,50)
,看看是否有帮助。
private final BasePagingLoader<PagingLoadResult<ModelData>> loader;
private Grid<ModelData> grid;
[...]
public ListUsersView(RpcProxy<PagingLoadResult<UserTableEntryBean>> proxy) {
// Create loader
loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader());
loader.setRemoteSort(true);
// Create store
store = new ListStore<ModelData>(loader);
FlowLayout layout = new FlowLayout();
layout.setMargins(new Margins(3, 0, 0, 0));
this.setLayout(layout);
final PagingToolBar toolBar = new PagingToolBar(50);
toolBar.bind(loader);
List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
columns.add(new ColumnConfig(UserTableEntryBean.Fields.username.name(), "Username", 100));
columns.add(new ColumnConfig(UserTableEntryBean.Fields.email.name(), "E-mail", 200));
ColumnConfig date = new ColumnConfig(UserTableEntryBean.Fields.creationDate.name(), "Creation date", 100);
date.setDateTimeFormat(DateTimeFormat.getFormat("dd/MM/y"));
columns.add(date);
ColumnModel cm = new ColumnModel(columns);
grid = new Grid<ModelData>(store, cm);
grid.setLoadMask(true);
grid.setBorders(true);
grid.setAutoExpandColumn(UserTableEntryBean.Fields.creationDate.name());
[...]
}
public boolean refreshTable() {
return loader.load();
}