ExtJS 4:如何使用相同的参数重新加载网格

时间:2012-02-07 05:45:57

标签: extjs extjs4

我想知道为什么ExtJS开发人员决定在ExtJS 4 Store API中删除reload()方法。我认为这是一个糟糕的决定。

这是我的问题。我正在使用以下代码初始化网格的商店:

store.load({
   params: {
       paramName: dynamicParameter
   }
});

注意上面代码中的dynamicParameter变量。

然后,如果我从网格中删除一些记录,我需要重新加载商店。

问题是:重新加载商店的代码段不应该知道dynamicParameter值。

删除记录的代码如下:

function deleteGridItems(grid, deleteUrl){
    // get selected rows
    var records = grid.getSelectionModel().getSelection();

    // ...... (codes to send request for deletion is ignored) ......

    if(success){
        grid.getStore().reload();
    }
}

不幸的是,上面的grid.getStore().reload()会出错,因为在ExtJS 4中,reload()函数不再存在。

那么如何使用相同的参数重新加载商店?

谢谢。

2 个答案:

答案 0 :(得分:2)

如果我没有弄错,load()函数现在与reload()完全相同。试试吧。

你需要设置代理额外的参数,而不是每次在load()时指定它:

请参阅此http://www.sencha.com/forum/showthread.php?127673-Reload-Store-in-EXT-JS-4

答案 1 :(得分:0)

另请注意,Ext JS在加载之前似乎没有检查商店是否已加载数据。我不确定为什么会这样,但可以通过覆盖StoreTreeStore中的load()方法来修复。

load: function(options) {
    // Loading quickly will cause data in the panel to break
    if (!this.isLoading()) {
        this.callParent(arguments);
    }
},

我没有遇到过网格问题,但如果你很快按下刷新按钮就会出现问题,你有时会出错并且树状结构会中断:

Uncaught TypeError: Cannot read property 'internalId' of undefined