基于GXT展示示例'Paging BeanModel Grid',我尝试在对数据源进行修改后重新加载网格。我像这样定义了加载器:
final BasePagingLoader<PagingLoadResult<ModelData>> loader =
new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, new BeanModelReader());
loader.setRemoteSort(true);
正确加载数据。
当我这样做时:
loader.load();
我的分页工具栏只是冻结并被禁用,网格也冻结并显示似乎是加载掩码的内容。
我试图添加一些事件来强制双重重载但没有运气:
grid.addListener(Events.Attach, new Listener<GridEvent<ModelData>>() {
public void handleEvent(GridEvent<ModelData> be) {
loader.load();
}
});
我尝试使用reconfigure(store,cm)选项以及相同的结果。
任何帮助?
谢谢, 霍尔迪阿。
答案 0 :(得分:1)
加载栏变灰,因此您可以看到它正在工作,并且网格也可能有加载消息。正在运行的代码是服务器,可能正在准备项目。
在调用的开始和结束时,在服务器代码(可能是RPC servlet)中设置日志消息,以查看它们运行的时间。根据您问题中的信息,这可能是实际发生“冻结”的地方。
在此之后浏览器中可能会暂停,但在这种情况下,加载圈将停止移动。
答案 1 :(得分:0)
对我来说,网格控制器上有一个错误:
代码详情:
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();
}