store.load 后的 Extjs 网格选择有不正确的数据
Extjs grid selection after store.load has incorrect data
在 ExtJS 4.2 中
我有一个带有远程负载记录的网格。我 select 网格中的一行并在 database.I 中更新它正在更新数据库中的记录并使用 store.load() 重新加载商店。发生这种情况后,我可以在调试器中暂停并检查商店,它确实具有正确的值。相同的记录仍然是 selected 但是下面的代码:
var selectedRecords = grid.getSelectionModel().getSelection();
没有得到更新的记录。如果我 deselect 和 reselect 它记录被刷新但不这样做它仍然具有旧值。有没有办法刷新它。
我看到很多关于让行在加载时保持 selected 的帖子,但这对我来说不是问题,它似乎可以自行完成。
更新值后尝试刷新网格存储。
Ext.getCmp('myGridID').getView().refresh()
这似乎是底层选择模型的错误。 'selected' 混合集合不会在 Ext.selection.Model 扩展 Ext.util.Observable 时更新,并且仅当某些与网格 selection 相关的事件发生时才会更新。如果您不想手动删除 select 然后 select,甚至不想在商店加载时注册回调,请尝试以下解决方法,
var selectionArr = grid.selModel.selected;
selectionArr.replace(selectionArr.keys[0],grid.getStore().getById(selectionArr.keys[0]));
现在试试,
var selectedRecords = grid.selModel.getSelection();
应该可以正常工作。
在 ExtJS 4.2 中 我有一个带有远程负载记录的网格。我 select 网格中的一行并在 database.I 中更新它正在更新数据库中的记录并使用 store.load() 重新加载商店。发生这种情况后,我可以在调试器中暂停并检查商店,它确实具有正确的值。相同的记录仍然是 selected 但是下面的代码:
var selectedRecords = grid.getSelectionModel().getSelection();
没有得到更新的记录。如果我 deselect 和 reselect 它记录被刷新但不这样做它仍然具有旧值。有没有办法刷新它。
我看到很多关于让行在加载时保持 selected 的帖子,但这对我来说不是问题,它似乎可以自行完成。
更新值后尝试刷新网格存储。
Ext.getCmp('myGridID').getView().refresh()
这似乎是底层选择模型的错误。 'selected' 混合集合不会在 Ext.selection.Model 扩展 Ext.util.Observable 时更新,并且仅当某些与网格 selection 相关的事件发生时才会更新。如果您不想手动删除 select 然后 select,甚至不想在商店加载时注册回调,请尝试以下解决方法,
var selectionArr = grid.selModel.selected;
selectionArr.replace(selectionArr.keys[0],grid.getStore().getById(selectionArr.keys[0]));
现在试试,
var selectedRecords = grid.selModel.getSelection();
应该可以正常工作。