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