Ext开发问题记录(二)form.load问题

项目开发中遇到这样一个问题。

 

某功能中,主表与多个子表关联,形成一个台账界面。其中部分子表为一对一关系,其他为一对多关系。

要求:一对一关系,显示其表单界面(FormPanel),一对多关系,显示列表页面GridPanel。

 

每个子表数据均为独立的JS文件,使用Ext.ux.ScriptLoader方法,在主表FormPanel中载入,创建对应的子表Panel,使用TabPanel载入显示。

Ext.ux.ScriptLoader('功能模块路径/scripts/子表Panel.js',false);
this.tuProdDayCwPsiLAOEWindow = new TuProdDayCwPsiLAOEWindow( {
		tuProdDayCwId : this.tuProdDayCwId,
		tuProdDayCwAOEFormPanel : this,
		editable : true
});	

创建对应的子表Panel对象,然后使用TabPanel,将其载入:

 

var subTabList = new Ext.TabPanel( {
		border : true,
		closable : false,
		autoHeight : true,
		activeTab : 0,
		frame : false,
		autoScroll : true,
		enableTabScroll : true
	});
subTabList.add(this.tuProdDayCwPsiLAOEWindow);

 

如果是列表页面,使用Store根据主表ID载入数据。如果是一对一表单,则使用form.load方法,根据主表ID进行数据查询载入。

 

问题出现了。当只载入一个子表表单,使用form.load方法载入数据,正常,当在重复以上代码,同时载入另一个表单,则第二个表单数据无法正常载入(数据通过ajax获取已返回)。

 

如果将第一个载入表单去掉,则第二个表单单独存在的时候,js运行正常无异常。

 

使用firebug调试,提示该错误:this.form.el is undefined。

 

百度一下,基本上都是讲到,在使用form.load方法,极容易出现该错误。因为该方法使用表单控件的id进行数据处理。容易发生id冲突,需要修改ext-all文件,改为通过name进行数据处理。

 

我现在的js中,控件都没有设置ID值。之后全部加上id设置,仍然提示该错误。不知道哪里冲突了。如果不进行form.load方法调用,表单界面能够正常显示。

 

最后实在没办法,使用了曲线救国的方式,不直接进行form.load进行数据获取装载,而是在主表单里面,使用store进行数据获取,若获取到数据,则将数据以Record类型,直接交给子表表单,使用record进行数据赋值。暂时是解决这个问题而来。

 

如果不修改ext-all文件(项目的共有文件,肯定不允许我随意更改),有什么解决的方法可以多个表单存在,而且可以分别进行form.load数据装载?

 

你可能感兴趣的:(form)