我在我的应用程序中有一个无限滚动的网格面板(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' }
}
});
对于非缓冲网格,有一种解决方案,但对我无效。