ExtJS和FormPanel:重新加载;t工作(通过相同的代码)
我有个问题真的解决不了。 我的目标是:我想动态地将选项卡添加到ExtJS和FormPanel:重新加载;t工作(通过相同的代码),extjs,tabpanel,Extjs,Tabpanel,我有个问题真的解决不了。 我的目标是:我想动态地将选项卡添加到TabPanel。 我已经创建了自己的组件EmpruntsTabPanel() 当我创建它时,我只需要给出一个数组和EmpruntsTabPanel()creates count(array))选项卡。 这很好用。 所以我做了另一个组件,DossierPanel 一旦加载,它就会动态创建EmpruntsTabPanel()。 这很好用。 呃,很好。它在第一次加载时就可以正常工作。 我制作了一个按钮来重新加载档案面板(见下面的代码)。
TabPanel
。
我已经创建了自己的组件EmpruntsTabPanel()
当我创建它时,我只需要给出一个数组和EmpruntsTabPanel()
creates count(array))选项卡。
这很好用。
所以我做了另一个组件,DossierPanel
一旦加载,它就会动态创建EmpruntsTabPanel()
。
这很好用。
呃,很好。它在第一次加载时就可以正常工作。
我制作了一个按钮来重新加载档案面板
(见下面的代码)。
我调用了完全相同的代码(因为它在同一事件中),并且我检查了:它是相同的URL,结果是相同的。
因此:
重新加载
不起作用,为什么它第一次起作用 var res = action.result;
var tab = Ext.getCmp('tab_emprunts_'+this.id_dossier);
tab.removeAll(true);
tab.add( new EmpruntsTabPanel( res.data.emprunts ) );
这是我的组件(为了清晰起见,我删除了很多textfield
组件):
进行初始加载的代码在哪里
console.log(res.data.emprunts)代码>在声明var res=action.result之前代码>这是正确的吗?(您可能没有在日志中看到真实结果)
在较高的级别上,如果加载时某些东西按预期工作,但不是在所有内容都呈现之后,我会查看在从表单中执行删除/添加魔术后是否需要调用form/container.doLayout()
让我知道这是否有帮助
DossierPanel = Ext.extend(Ext.form.FormPanel, {
closable: true,
autoScroll:true,
initComponent : function(){
var n = this.id_dossier;
this.title = n;
this.id = 'id_dossier_'+this.id_dossier;
this.bodyStyle = 'padding:15px';
this.labelWidth = 150;
this.items = [{
xtype:'tabpanel',
plain:true,
activeTab: 0,
/* (!) Pour qu'un onglet qui n'est pas affiché soit
* quand même calculé, il faut faire :
* deferredRender: false
* C'est très important lorsqu'on fait des fiches
* avec plusieurs onglets.
*/
deferredRender: false,
defaults:{bodyStyle:'padding:10px'},
items:[{
title:'Détails personnels',
layout:'form',
autoHeight: true,
defaults: {width: '99%'},
defaultType: 'textfield',
items: [{
xtype:'datefield',
fieldLabel: 'Date premier contact ',
name: 'DATE1ERCONTACTJMA',
readOnly: true,
format:'d/m/Y'
}]
},{
title:'Adresse',
layout:'form',
autoHeight: true,
defaults: {width: '95%'},
defaultType: 'textfield',
items: [{
fieldLabel: 'Adresse 1 ',
name: 'ADRESSE1'
}]
},{
id: 'tab_emprunts_'+this.id_dossier,
title:'Emprunts',
layout:'form',
autoHeight: true,
defaults: {width: '99%'},
defaultType: 'textfield',
items: []
}]
}];
this.buttonAlign = 'left';
this.buttons = [{
text: 'Recharger',
handler: function() {
this.getForm().load( {
url: '/ws/cellulemedicale/jsonEditDossier.php',
params: {
id_dossier: this.id_dossier
},
waitTitle: 'Patientez',
waitMsg: 'Rafraichissement',
failure:function(form, action) {
},
scope: this
} );
},
scope: this
}];
this.on('actioncomplete', function (form,action) {
if (action.type=='load') {
if(typeof action.result != 'undefined') {
console.log( 'load finished' );
console.log( res.data.emprunts );
var res = action.result;
var tab = Ext.getCmp('tab_emprunts_'+this.id_dossier);
tab.removeAll(true);
tab.add( new EmpruntsTabPanel( res.data.emprunts ) );
}
}
});
DossierPanel.superclass.initComponent.call(this);
}
});