ExtJs Gridpanel存储刷新

时间:2011-04-28 08:01:30

标签: extjs

我从数据库绑定ExtJs Gridpanel并在gridpanel下添加“Delete”按钮。通过使用删除按钮处理程序,我删除了gridpanel上的选定记录。但是,在删除之后,网格不会刷新(它会从数据库中删除,但由于没有刷新而在网格上显示)。

如何在删除处理程序后刷新网格?

10 个答案:

答案 0 :(得分:39)

尝试刷新视图:

Ext.getCmp('yourGridId').getView().refresh();

答案 1 :(得分:13)

重新加载ds以刷新网格。

ds.reload();

答案 2 :(得分:11)

grid.store = store;
store.load({ params: { start: 0, limit: 20} });
grid.getView().refresh();

答案 3 :(得分:5)

我有一个类似的问题。我需要做的只是在删除处理程序中键入store.load();。随后无需键入grid.getView().refresh();

除了所有这些,您还可以在删除处理程序中键入store.remove(record); - 这可确保删除的记录不再显示在网格上。

答案 4 :(得分:4)

使用store.remove比使用model.destroy更好。 单击该按钮的处理程序可能如下所示:

destroy: function(button) {
    var grid = button.up('grid');
    var store = grid.getStore();
    var selected = grid.getSelectionModel().getSelection();

    if (selected && selected.length==1) {
        store.remove(selected);
    }
}

答案 5 :(得分:4)

Dasha&MMT解决方案的组合:

  Ext.getCmp('yourGridId').getView().ds.reload();

答案 6 :(得分:3)

试试这个grid.getView().refresh();

答案 7 :(得分:3)

grid.getStore().reload({
  callback: function(){
    grid.getView().refresh();
  }
});

答案 8 :(得分:2)

3.4中的另一种方法(不知道这是否是正确的Ext):你可以有一个像这样的删除处理程序,假设每一行都有一个'删除'按钮。

handler: function(grid, rowIndex, colIndex) {
    var rec = grid.getStore().getAt(rowIndex);
    var id = rec.get('id');
    // some DELETE/GET ajax callback here...
    // pass in 'id' var or some key
    // inside success
    grid.getStore().removeAt(rowIndex);
}

答案 9 :(得分:0)

刷新网格存储

Ext.getCmp('GridId').getStore().reload();

这将重新加载网格存储并获取新数据。