Javascript rest webservice删除记录后刷新extjs数据存储记录计数

Javascript rest webservice删除记录后刷新extjs数据存储记录计数,javascript,web-services,extjs,store,Javascript,Web Services,Extjs,Store,我通过获取网格中的一行id并调用rest web服务将其从数据库中删除,从而删除该行。 通过调用store.load()更新数据网格; 问题是除非我刷新页面,否则记录计数永远不会改变 success : function (response) { console.log("count before load" + pDetailsTab.tvsListGrid.store.getCount()); pDetailsTab.tvsListGrid.store.load();

我通过获取网格中的一行id并调用rest web服务将其从数据库中删除,从而删除该行。 通过调用store.load()更新数据网格; 问题是除非我刷新页面,否则记录计数永远不会改变

success : function (response) {
    console.log("count before load" + pDetailsTab.tvsListGrid.store.getCount());
    pDetailsTab.tvsListGrid.store.load();
    console.log("count after load " + pDetailsTab.tvsListGrid.store.getCount());
    if (pDetailsTab.tvsListGrid.store.getCount() >= 1) {
        console.log("inside if");
        pDetailsTab.tvsListGrid.getSelectionModel().select(0);
    } else if (pDetailsTab.respSGrid.store.getCount() >= 1) {
        pDetailsTab.respSGrid.getSelectionModel().select(0);
    }
    ExtjsUtils.hideWait();
}
这是console.log的输出(我用“…”替换了一些输出):


我在网上搜索过,但没有找到。有什么想法吗?

请使用grid的
grid.getView().refresh()
方法或通过
grid.getStore().reload()
从服务器获取正确的记录计数吗?尝试调试java代码并查看查询结果。返回记录的java代码可能存在问题。

问题在于load()是异步的。 此代码必须如下所示:

pDetailsTab.tvsListGrid.store.load({
    scope: this,
    callback : function(records, operation, success) {
        console.log("count after load " + pDetailsTab.tvsListGrid.store.getCount());
        if (pDetailsTab.tvsListGrid.store.getCount() >= 1) {
            console.log("inside if");
            pDetailsTab.tvsListGrid.getSelectionModel().select(0);
        } else if (pDetailsTab.respSGrid.store.getCount() >= 1) {
            pDetailsTab.respSGrid.getSelectionModel().select(0);
        }
        ExtjsUtils.hideWait();
});
请检查版本4.1.3的exjts文件

我使用了sync,但也没有用。4.1.3版中不存在重新加载。网格刷新不是我的问题,因为它是由load()自动完成的。我得到了正确的记录。问题是load()是异步的,这导致我必须添加回调函数来实现我想要的。
pDetailsTab.tvsListGrid.store.load({
    scope: this,
    callback : function(records, operation, success) {
        console.log("count after load " + pDetailsTab.tvsListGrid.store.getCount());
        if (pDetailsTab.tvsListGrid.store.getCount() >= 1) {
            console.log("inside if");
            pDetailsTab.tvsListGrid.getSelectionModel().select(0);
        } else if (pDetailsTab.respSGrid.store.getCount() >= 1) {
            pDetailsTab.respSGrid.getSelectionModel().select(0);
        }
        ExtjsUtils.hideWait();
});