2011-05-30 103 views
0

大家好 我是一個開始與extjs和我有改變問題/設置項目佈局,當我點擊我的節點之一。EXTJS:TreePanel點擊設置項目更改

這裏我的ContentPanel:

var contentPanel = { 
    id: 'content-panel', 
    region: 'center', // this is what makes this panel into a region within the containing layout 
    layout: 'card', 
    margins: '2 5 5 0', 
    activeItem: 0, 
    border: false, 
    items: layoutExamples // HERE I WANT TO CHANGE DYNAMIC 
}; 

我的 「聽衆」 我的樹節點:

treePanel.getSelectionModel().on('select', function(selModel, record) { 
    if (record.get('leaf')) { 
     //Ext.getCmp('content-panel').layout.setActiveItem(record.getId() + '-panel'); <== It's work. 
     Ext.getCmp('content-panel').setActive(formPanel); // HERE I TRY TO CHANGE ITEM ON CLICK AND SET FORMPANEL 

}); 

我的測試項目:

var formPanel = Ext.create('Ext.form.Panel', { 
    frame: true, 
    title: 'Form Fields', 
    width: 340, 
    bodyPadding: 5, 

    fieldDefaults: { 
     labelAlign: 'left', 
     labelWidth: 90, 
     anchor: '100%' 
    }, 

    items: [{ 
     xtype: 'textfield', 
     name: 'textfield1', 
     fieldLabel: 'Text field', 
     value: 'Text field value' 
    }, { 
     xtype: 'textfield', 
     name: 'password1', 
     inputType: 'password', 
     fieldLabel: 'Password field' 
    }, { 
     xtype: 'filefield', 
     name: 'file1', 
     fieldLabel: 'File upload' 
    }, { 
     xtype: 'textareafield', 
     name: 'textarea1', 
     fieldLabel: 'TextArea', 
     value: 'Textarea value' 
    } }] 
}); 

所以,我的目標是改變項目我的內容面板時,我點擊一個節點..!

非常感謝您的幫助好友!

+0

哪裏定義了formPanel?爲什麼不使用註釋行? – 2011-05-30 15:43:18

+0

FormPanel被定義onDocReady(如果我在contentPanel中執行「items:formpanel」我有我的項目,但它是靜態的,我想改變點擊(因爲我有很多項目,一個節點)並且註釋行用於更改佈局(這是sencha樣品),我只是想改變項目..謝謝。 – sloshy 2011-05-30 16:01:07

回答

2

嘗試,並告訴我的意見:

var formPanel = Ext.create('Ext.form.Panel', 
    { 
     'id': 'form-panel-1', // or what you want to give 
     // and all the properties you already defined 
    } 
); 

而且在事件的基礎上,http://docs.sencha.com/ext-js/4-0/#/api/Ext.layout.container.Card-method-setActiveItem

treePanel.getSelectionModel().on('select', function(selModel, record) { 
    if (record.get('leaf')) { 
     Ext.getCmp('content-panel').getLayout().setActiveItem(Ext.getCmp('form-panel-1')); 
    } 
}); 

順便說一句,在你提供的代碼,有錯誤在聽衆中,它忽略了一個}關閉if!

+0

對於錯過「}」是的,這是錯誤的複製/粘貼。不幸的是它是行不通的:(。 ..)我也嘗試id:'form-panel-1'沒有引用id。謝謝 – sloshy 2011-05-30 18:17:45

+0

我更新了我的帖子,新的嘗試,告訴我:) – 2011-05-30 18:23:09

+0

感謝它的工作!this:Ext.getCmp('content-panel ').layout.setActiveItem(Ext.getCmp('form-panel-1'));但它也改變了佈局。如果沒有人知道如何改變「item」,我會考慮這個答案:) – sloshy 2011-05-30 18:31:20