我在这里使用ExtJS 3。我想从数据库中填入一个formpanel,其中包含要提交的字段。基本上,我不知道我的表单将有的字段,我想从数据库生成所有formpanel项目。我可以生成一个JSON字符串作为PHP文件的响应传递,包含字段和所有内容,但我需要知道如何在ExtJS中使用它。
任何帮助?
感谢。
答案 0 :(得分:1)
你将不得不以ExtJS理解的格式加载和发送字段。最简单的方法是,如果你不介意直接耦合到ExtJS格式,那就是在后端生成ExtJS模板样式。在这种情况下,您的PHP脚本将生成如下内容:
new Ext.form.FormPanel({
width: 350,
defaultType: 'textfield',
items: [{
xtype: '<?php echo $field ?>',
value: '<?php echo $value ?>'
}]
});
显然,您可以重新排列这个,以便“items”数组预先在循环中构建,并且您可以根据需要添加任意数量的项目。
此外,根据您的设置方式,您还可以返回项目数组并动态添加到表单中,无需发送“new Ext.form .. etc”部分,以及将代码分离得更好一些。就个人而言,这就是我的方式。
编辑:
在回复你的评论时,如果你在适当的ExtJS结构中返回JSON数组,你需要做的就是使用“panel.add(myItems);” [1]方法,可能还要调用“panel.doLayout();”强迫它重新渲染。
查看有关xtype如何工作的“组件”[2]的详细信息。
[1] http://www.extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel
[2] http://www.extjs.com/deploy/dev/docs/?class=Ext.Component
答案 1 :(得分:0)
我知道这是一篇旧帖子,但无论如何我都会碰到它,因为它首先出现在我的Google搜索中。
我很幸运从Ext.Ajax.request返回一个JSON字符串,eval()它(我知道,我知道,邪恶 - 但它的工作原理和Ext.Decode反正使用eval) - 然后传递结果eval到Panel.add(Ext.ComponentManager.create(eval_result));
希望这有助于某人。