2014-12-09 4 views
1

Я использую ExtJS 3.4, у меня есть набор полей mainDetailsFieldSet, который я хочу использовать в двух формах, addFormPanel и updateFormPanel. Я могу получить fieldset в форме addFormPanel, но я не могу получить его в updateFormPanel. Я получаю синюю линию. Я не могу найти здесь что-то не так ... может кто-нибудь мне помочь?extjs3.4: как использовать набор полей в двух разных формах?

Вот мой код:

// mainfieldset с текстовым полем и списком

var clCombo = new Ext.form.ComboBox({ 
        store: store, 
        fieldLabel: 'Name', 
        displayField: 'clName', 
        name: 'clName', 
        valueField: 'clName', 
        typeAhead: true, 
        mode: 'local', 
        triggerAction: 'all', 
        emptyText: 'Select Here' 
      }); 
this.mainDetailsFieldSet = new Ext.form.FieldSet({ 
     title: 'Details', 
     items:[ 
      { 
       fieldLabel: ' Name', 
       xtype: 'textfield', 
       name: 'name' 
       },clCombo 
      ] 
     }); 
var mainDetailsFieldSet = this.mainDetailsFieldSet ; 

// addFormPanel, где я использую mainfieldset

this.addFormPanel = new Ext.form.FormPanel({ 
       title: 'Add Form', 
       autoScroll: true, 
       items:[ 
        mainDetailsFieldSet ] 
}); 

// updateformpanel, где я хотел бы добавить тот же набор полей снова

this.updateFormPanel = new Ext.form.FormPanel({ 
      autoScroll: true, 
      items:[mainDetailsFieldSet] 
     }); 

Заранее спасибо

ответ

2

Невозможно отобразить один экземпляр в разных местах.

Вариант A: Вам понадобится создать второй экземпляр, если вам это нужно дважды.

this.comboCfg = { 
     store: store, 
     fieldLabel: 'Name', 
     displayField: 'clName', 
     name: 'clName', 
     valueField: 'clName', 
     typeAhead: true, 
     mode: 'local', 
     triggerAction: 'all', 
     emptyText: 'Select Here' 
}; 
this.mainDetailsFieldSet1 = new Ext.form.FieldSet({ 
    title: 'Details', 
    items:[{ 
     fieldLabel: ' Name', 
     xtype: 'textfield', 
     name: 'name' 
     },Ext.apply({xtype:'combo'},comboCfg)] 
}); 
this.mainDetailsFieldSet2 = new Ext.form.FieldSet({ 
    title: 'Details', 
    items:[{ 
     fieldLabel: ' Name', 
     xtype: 'textfield', 
     name: 'name' 
     },Ext.apply({xtype:'combo'},comboCfg)] 
}); 
var mainDetailsFieldSet1 = this.mainDetailsFieldSet1; 
var mainDetailsFieldSet2 = this.mainDetailsFieldSet2; 

this.addFormPanel = new Ext.form.FormPanel({ 
    title: 'Add Form', 
    autoScroll: true, 
    items:[mainDetailsFieldSet1] 
}); 

this.updateFormPanel = new Ext.form.FormPanel({ 
    autoScroll: true, 
    items:[mainDetailsFieldSet2] 
}); 

Вариант B: Но то, что вы можете сделать, это remove и add экземпляр каждый раз.

this.addFormPanel = new Ext.form.FormPanel({ 
    title: 'Add Form', 
    autoScroll: true 
}); 
// before show 
this.addFormPanel.add(mainDetailsFieldSet); 
// before hide 
this.addFormPanel.remove(mainDetailsFieldSet); 

this.updateFormPanel = new Ext.form.FormPanel({ 
    autoScroll: true 
}); 
// before show 
this.updateFormPanel .add(mainDetailsFieldSet); 
// before hide 
this.updateFormPanel .remove(mainDetailsFieldSet); 

Примечание Использование конфигурации с xtype «s так часто, как вы можете и не определить любой id самостоятельно, если это не строго необходимо.


Вариант C:

this.comboCfg = { 
     store: store, 
     fieldLabel: 'Name', 
     displayField: 'clName', 
     name: 'clName', 
     valueField: 'clName', 
     typeAhead: true, 
     mode: 'local', 
     triggerAction: 'all', 
     emptyText: 'Select Here' 
}; 
this.mainDetailsFieldSetCfg = { 
    xtype: 'fieldset', 
    title: 'Details', 
    items:[ 
     { xtype:'textfield',fieldLabel:' Name',name:'name'}, 
     Ext.apply({xtype:'combo'},comboCfg) 
    ] 
}); 

this.addFormPanel = new Ext.form.FormPanel({ 
    title: 'Add Form', 
    autoScroll: true, 
    items:[this.mainDetailsFieldSetCfg] 
}); 

this.updateFormPanel = new Ext.form.FormPanel({ 
    autoScroll: true, 
    items:[this.mainDetailsFieldSetCfg] 
}); 
+0

Это работало отлично .. !! Большое вам спасибо :) – user777777

+0

@Shruti Добро пожаловать;) – sra

0

Я уверен, что если вы добавите тот же элемент в два места, он будет отображаться только в первом виде, а не в другом. Он рассматривает это как ошибку. Вам нужно указать другой идентификатор для элемента во второй форме. Оба набора полей должны быть отдельными объектами, дифференцированными разными идентификаторами. Они могут иметь одинаковые конфигурации столько раз, сколько у них разные идентификаторы.