我在这里使用 ExtJS 3。我想从数据库中填充一个表单面板,其中包含要提交的字段。基本上,我不知道我的表单将拥有的女巫字段,我想从数据库中生成所有表单面板项目。我可以生成一个 JSON 字符串,作为来自 PHP 文件的响应,其中包含字段和所有内容,但我需要知道如何在 ExtJS 中使用它。
有什么帮助吗?
谢谢。
您将不得不以 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();” 强制它重新渲染得很好。
查看有关“组件”[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));
希望这可以帮助某人。