我的应用程序(ExtJs 4.2.1)中有一个无限滚动网格面板,类似于此示例。用户可以单击刷新按钮,然后必须使用数据库中的数据更新网格的行。我在刷新按钮处理程序中调用 store.load(),我的数据得到更新。这适用于网格面板的第一行(第 1 页的记录)。但如果用户向下滚动网格,它就不起作用。在 store.load 之后,网格将滚动位置重置为顶部。
我正在寻求一种解决方案来重新加载商店并刷新保持当前选择以及当前滚动位置的网格。好消息:我有商店中每条记录的全局索引。
这是我的代码,数据库中有数千个条目。
网格面板:
Ext.define('MyApp.view.MyGrid', {
extend: 'Ext.grid.Panel',
requires:[ 'Ext.grid.plugin.BufferedRenderer'],
alias: 'widget.myGrid',
plugins: 'bufferedrenderer',
loadMask: true,
selModel: {
mode: 'MULTI',
pruneRemoved: false
},
itemSelector: 'div.workspaceItemSelector',
overItemCls: 'workspaceItemMouseOver',
trackOver: true,
autoScroll: true,
verticalScroller: { variableRowHeight: true },
defaultSortOrder: 'ASC',
// and some column definitions ...
});
店铺:
Ext.define('MyApp.store.MyStore', {
extend: 'Ext.data.Store',
autoLoad: false,
buffered: true,
pageSize: 100,
leadingBufferZone: 100,
remoteSort: true,
model: 'MyApp.model.MyModel',
storeId: 'myStore',
proxy: {
type: 'rest',
url: 'someUrl',
reader: { type: 'json', totalProperty: 'total', root: 'items' }
}
});
有一个无缓冲网格的解决方案,它对我不起作用。