ExtJs Gridpanel 存储刷新
Posted
技术标签:
【中文标题】ExtJs Gridpanel 存储刷新【英文标题】:ExtJs Gridpanel store refresh 【发布时间】:2011-04-28 08:01:30 【问题描述】:我正在从数据库绑定 ExtJs Gridpanel,并在我的网格面板下方添加“删除”按钮。通过使用删除按钮处理程序,我删除了网格面板上的选定记录。但是,删除后,网格不刷新(从数据库中删除,但由于不刷新而显示在网格上)。
删除处理程序后如何刷新网格?
【问题讨论】:
【参考方案1】:尝试刷新视图:
Ext.getCmp('yourGridId').getView().refresh();
【讨论】:
这似乎不起作用。我 80% 的行都消失了【参考方案2】:重新加载 ds 以刷新网格。
ds.reload();
【讨论】:
这行得通! getView().refresh() 好像没有效果。 刷新视图仍然适用于本地数据。如果您只删除服务器上的记录而不是本地记录,刷新将无济于事。【参考方案3】:grid.store = store;
store.load( params: start: 0, limit: 20 );
grid.getView().refresh();
【讨论】:
你确定你应该在异步加载后立即调用 grid.view.refresh() 吗?【参考方案4】:我遇到了类似的问题。我需要做的就是在删除处理程序中输入store.load();
。无需随后键入grid.getView().refresh();
。
除此之外,您还可以在删除处理程序中键入store.remove(record)
; - 这可确保已删除的记录不再显示在网格上。
【讨论】:
【参考方案5】:试试这个grid.getView().refresh();
【讨论】:
他回答这个比接受的答案晚了 1 分钟,可能他们在同一时间打字,但他们的网速不同。【参考方案6】:使用 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);
【讨论】:
【参考方案7】:grid.getStore().reload(
callback: function()
grid.getView().refresh();
);
【讨论】:
【参考方案8】:大傻与MMT解决方案的结合:
Ext.getCmp('yourGridId').getView().ds.reload();
【讨论】:
【参考方案9】: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);
【讨论】:
【参考方案10】:刷新网格存储
Ext.getCmp('GridId').getStore().reload();
这将重新加载网格存储并获取新数据。
【讨论】:
以上是关于ExtJs Gridpanel 存储刷新的主要内容,如果未能解决你的问题,请参考以下文章
无法从gridpanel extjs4 MVC中的存储加载数据
EXTJS GridPanel 和 Column Data 默认值