テーブル名の横に 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 ストアを検索して tabledescriptor を取得し、それをビューに渡します。ビューは、表示するデータをストア (この場合は「Columns」) にロードします。そして、タブを切り替えるまで、これはすべて正常に機能します。アクティブなタブを変更した後、別のテーブルの名前をクリックしてもデータが更新されず、次のようになります: 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);
}