我有一个基本布局,可以使用树视图选择不同的组件,然后在主面板中渲染。这适用于我的所有组件(如网格),但有表格故障。
第一次选择表单时,没关系,只要您再次尝试选择它,就不会呈现任何内容。
此处提供了演示,并且页面顶部有一个指向javascript的链接。
http://www.somethingorothersoft.com/ext
组件的选择发生在selectNode函数中,我已经尝试了一切,但没有太多结果。
编辑,因为Jim Barrows指出在create function中实例化一个组件会更好。我一直犹豫不决,因为这是我真正的应用程序中的一个相当重大的变化,我想实际保持实例,以便于它们之间的导航。
现在我已经写了这篇文章,我意识到要正确地处理状态,我必须将它存储在服务器上,无论浏览器导航到另一个页面......
编辑我做了更改以始终实例化这样的表单,现在它更加极了:):
components['Form1'] = { xtype:'form', "items": [
{ "name": "Rep_ID", "allowBlank": false, "fieldLabel": "Rep" },
{ "name": "Date", "allowBlank": false, "fieldLabel": "Date", "xtype": "datefield" },
{ "name": "Time", "allowBlank": true, "fieldLabel": "Time", "xtype": "timefield"}],
"defaults": { "xtype": "textfield" }
};
components['Form2'] = { xtype: 'form', "items": [
{ "name": "Date", "allowBlank": false, "fieldLabel": "Date", "xtype": "datefield" },
{ "name": "Time", "allowBlank": true, "fieldLabel": "Time", "xtype": "timefield"}],
"defaults": { "xtype": "textfield" }
}
答案 0 :(得分:0)
你的问题在这里:
var selectNode = function(node) {
node.select();
node = node.attributes;
var newpanel = components[node.component].create();
var cp = Ext.ComponentMgr.get('center_panel');
cp.setTitle(node.text, node.icon);
newpanel.hideMode = 'visibility';
newpanel.hide();
cp.removeAll();
cp.add(newpanel);
cp.doLayout();
newpanel.show();
};
在这里:
create: function() { return this; }
cp.removeAll()
确实会破坏所有组件。因此,当调用create时,不会返回,因此不会显示任何内容。视口组件会自动销毁任何已删除的内容,并且面板会继承此功能。您可以将autoDestory设置为false,也可以在create中执行新操作。