Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS弹出窗口表单数据加载_Extjs_Extjs3 - Fatal编程技术网

ExtJS弹出窗口表单数据加载

ExtJS弹出窗口表单数据加载,extjs,extjs3,Extjs,Extjs3,我使用网格面板。当我选择网格中的行时,会得到以下结果: 如果我在“document.body”中呈现表单,则一切正常,并且表单 字段已填充。 如果我在窗口面板中启动相同的表单,则表单字段为空。 当我同时使用两者时,“document.body”中呈现的表单是 关闭,并填充窗口中的表单字段。 我犯错误的地方 // Grip panel part sm: new Ext.grid.RowSelectionModel({ singleSelect: true, list

我使用网格面板。当我选择网格中的行时,会得到以下结果:

如果我在“document.body”中呈现表单,则一切正常,并且表单 字段已填充。 如果我在窗口面板中启动相同的表单,则表单字段为空。 当我同时使用两者时,“document.body”中呈现的表单是 关闭,并填充窗口中的表单字段。 我犯错误的地方

// Grip panel part
sm: new Ext.grid.RowSelectionModel({
        singleSelect: true,
        listeners: {
                    rowselect: function(sm, index, record) {deleteWindow.show();}
                   }
        })  
// End Grid panel part      

var myForm = new Ext.form.FormPanel({
        title:"Basic Form",
        width:425,
        frame:true,
        items: [
            new Ext.form.TextField({
                id:"to",
                fieldLabel:"To",
                width:275,
                allowBlank:false,
                blankText:"Please enter a to address",
                     readOnly: true
            }),
            new Ext.form.TextField({
                id:"subject",
                fieldLabel:"Subject",
                width:275,
                allowBlank:false,
                blankText:"Please enter a subject address",
                readOnly: true
            }),
        ],
        buttons: [
            {text:"Cancel"},
            {text:"Save"}
        ]
    });

var deleteWindow = new Ext.Window({
        id: 'id_deleteWindow',
        title: 'Delete',
        closable:true,
        width: 750,
        height:     380,
        plain:true,
        layout: 'fit',
        items: myForm
});

var id_test = 2;  // This is only for this problem

//myForm.render(document.body);  // When using this code everything is ok, and form fields are filled


myForm.getForm().load({
                url:'ggg.php',
                params:{
                        id: id_test
                         }
});
JSON数据

{success:true,results:[{"id_test":"1","to":"a","subject":"aa"}]}

我建议对守则作以下修改:

在文本字段上使用id属性,比如id:'subject',使用name属性name:'subject' 只是好奇……因为您正在处理网格上的rowselect事件,所以您可能希望在表单面板中加载所选记录,而不是再次加载它。如果是这种情况,则可以在窗体面板上调用loadRecord方法,并将record对象传递给它,然后在窗口上调用show方法 我发现,当对表单调用load时,ExtJS尝试访问表单dom元素以确定表单方法。我找到了两种解决方案:

将方法添加到表单配置中 显示窗口后将数据加载到窗体 下面是第二个解决方案的代码:

var deleteWindow = new Ext.Window({
    id: 'id_deleteWindow',
    title: 'Delete',
    closable:true,
    width: 750,
    height:     380,
    plain:true,
    layout: 'fit',
    items: myForm,
    listeners: {
        show: function() {
            var form = this.items.get(0);
            form.getForm().load({
                url:'ggg.php',
                params:{
                    id: id_test
                }
            });
        }
    }
});
deleteWindow.show();