我在带有表格名称的一侧有一个 grid.panel,我想在用户单击它时在选项卡视图内的另一个 grid.panel 中显示表格(或它的结构)。
我做了什么:
在动作监听器中
var store = Ext.data.StoreManager.lookup('Tables');
currentTable = store.findRecord('name',record.get('name'));
var structureView = Ext.ComponentQuery.query('structure')[0];
structureView.showTable(currentTable);
在视图中
showTable: function(table) {
this.storeObj.getProxy().url = '/tables/stucture/' + table.data.name;
this.storeObj.load();
this.update();
}
在 Tables 存储中,我有表描述符,其中包含一些基本数据,例如名称等,并且带有表名的列表显示了该存储的内容。因此,我查找 Tables 存储并获取 tabledescriptor 并将其传递给视图,然后视图加载存储(在本例中为“列”)以及它将显示的数据。在我切换标签之前,这一切都很好。更改活动选项卡然后更改回数据不会在单击另一个表的名称时刷新,我得到这个:Uncaught TypeError: Cannot call method 'removeChild' of null。更改活动选项卡后似乎无法再加载商店。我在论坛上发现了这个问题,但我找不到解决方案。
你有什么想法?
谢谢你的时间。
编辑:
Ext.define('App.view.Table.Structure', {
extend: 'Ext.grid.Panel',
alias: 'widget.structure',
store: 'Columns',
width: 800,
storeObj: undefined,
initComponent: function () {
this.columns = [{
header: 'Column name',
dataIndex: 'name',
flex: 1
}, {
header: 'Position',
dataIndex: 'position',
flex: 1
}, {
header: 'Default value',
dataIndex: 'defaultValue',
flex: 1
}, {
header: 'Column type',
dataIndex: 'type',
flex: 1
}, ];
this.storeObj = Ext.StoreManager.lookup('Columns');
this.callParent(arguments);
}