ExtJS从数据库加载表单项/字段

时间:2009-11-23 13:45:48

标签: php database extjs formpanel

我在这里使用ExtJS 3。我想从数据库中填入一个formpanel,其中包含要提交的字段。基本上,我不知道我的表单将有的字段,我想从数据库生成所有formpanel项目。我可以生成一个JSON字符串作为PHP文件的响应传递,包含字段和所有内容,但我需要知道如何在ExtJS中使用它。

任何帮助?

感谢。

2 个答案:

答案 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));

希望这有助于某人。