1

我有一个带有按钮的表格,用于添加新元素,并在行中添加另一个按钮来编辑元素。这些操作共享相同的表单,唯一的区别是在编辑模式下填写表单。当用户单击按钮时,将显示一个带有表单的新窗口。

例如,我第一次单击按钮以添加新元素时,效果很好。显示表格。但是......如果我关闭窗口并尝试编辑用户,则会出现一个没有内容的额外窗口和错误“TypeError:b is null”是表单定义的问题吗?也许窗体是用窗口删除的?

我在 var 中定义了一个表单:

var formPanel =  Ext.create('Ext.form.Panel',{
     extend: 'Ext.form.Panel',
     id: 'policyForm',
     ...

我在网格的 tbar 中有一个按钮来显示窗口,以便添加用户和行中的另一个按钮来编辑他。这是按钮的处理程序:

handler : function(){
    Ext.create('Ext.window.Window',{
        layout: 'fit',
        title: 'New Policy',
        items: [formPanel],
        width: 650,
        height: 500,
        id: 'myPolicyWindow'
    }).show();
}
4

2 回答 2

2

您在 Panel 和 Window 代码中设置的那些 s 很可能id导致您无法在不同的窗口中重用相同的表单。您应该尽量避免id在 Ext 组件上使用该属性,因为 ID 应该是唯一的,它可能会导致类似这样的问题。将该itemId属性与 结合使用Ext.ComponentQuery以允许在不使用 的情况下获取对组件的引用Ext.getCmp(compId)

于 2013-07-01T13:08:48.640 回答
1

我同意你不应该使用 id。但是,实际问题可能是您所怀疑的:表单的实例正在被破坏。这是因为默认值closeActionExt.window.Window“destroy”,它也会清除所有子组件。要么更改closeAction为“隐藏”,要么创建表单面板的新实例以及窗口的新实例。

于 2013-07-01T13:13:34.253 回答