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