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

时间:2014-02-19 14:05:15

标签: javascript web-services extjs store

我通过获取其ID来删除网格中的一行,并调用其他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的输出(我用'...'替换了一些输出):

count before reload 1 ...
...
count after reload 1 ...

我在互联网上搜索但是徒劳无功。好吗?

3 个答案:

答案 0 :(得分:1)

问题是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文档 http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.data.Store-method-load

答案 1 :(得分:0)

使用网格grid.getView().refresh()方法或按grid.getStore().reload()重新加载网格商店

答案 2 :(得分:0)

您是否从服务器获得正确的记录数?尝试调试java代码并查看查询结果。这可能是java代码返回记录的问题。