Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gwt 在GXT网格中重新加载数据冻结_Gwt_Load_Grid_Freeze_Gxt - Fatal编程技术网

Gwt 在GXT网格中重新加载数据冻结

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

基于GXT showcase示例“Paging BeanModel Grid”,我尝试在对数据源进行修改后重新加载网格。我这样定义加载程序:

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事件。尝试传递分页偏移量和限制,如so
loader.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();
}