如果我有一个以上的网格实例,我会遇到很多问题。一个问题是状态的节省(即分类,过滤器宽度等)不能正常工作。当我导航到同一网格的另一个实例时,将重置状态保存。但是,如果我只在一个网格的页面上,我可以点击刷新,并改变一切,一切都保存好。它就在我导航到具有我的网格的另一个实例的屏幕时。
是的,我为这两个实例设置了不同的 stateId ,我在应用程序开始时调用 Ext.state.Manager :< / p>
Ext.state.Manager.setProvider(Ext.create('Ext.state.CookieProvider'));
实例的创建如下所示:
this.packageGrid = Ext.create('js.grid.PackageGrid', {
stateId: 'CompletePackageGrid', //for my other instance I obviously use a different string here
width: 979,
height: 400,
});
我的网格代码如下所示:
Ext.define('js.grid.PackageStore', {
extend: 'Ext.data.JsonStore',
model: 'js.model.Package',
remoteFilter : false,
remoteSort: false
});
var createColumns = function () {
var columns = [{
dataIndex: 'id',
text: 'ID',
width: 80,
filter: {
type: 'int'
}
}, {
dataIndex: 'packageName',
text: 'Name of Packet',
width: 300,
filter: {
type: 'string'
}
}, {
}];
return columns;
};
Ext.define('js.grid.PackageGrid', {
extend: 'Ext.grid.Panel',
title: '',
multiSelect: true,
autoExpandColumn: 'name',
loadMask: true,
stateful: true, //*******STATEFUL!!!!
filterable: true,
initComponent : function (){
this.columns = createColumns();
this.initialConfig.columns = this.columns;
this.store = new js.grid.PackageStore();
this.plugins = {
ptype: 'bufferedrenderer',
trailingBufferZone: 20, // Keep 20 rows rendered in the table behind scroll
leadingBufferZone: 50 // Keep 50 rows rendered in the table ahead of scroll
};
this.viewConfig = {
stripeRows: true,
enableTextSelection: true
};
this.features = {
ftype: 'filters',
encode: false,
local: true
};
this.callParent();
}
});
我试图在我的 initComponent 方法中加入尽可能多的代码,因此共享对象的风险较小。
我的网格代码如何显示?有没有什么可以解释这个问题?