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

发布于 2024-08-12 12:00:54 字数 176 浏览 5 评论 0原文

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

有什么帮助吗?

谢谢。

I am using ExtJS 3 here. I would like to populate a formpanel from database with fields to be submitted. Basically, I don't know witch fields my form will have and I want to generate all formpanel items from database. I could generate a JSON string to be passed as the response from the PHP file with the fields and everything but I need to know how to work with this in ExtJS.

Any help ?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

坏尐絯 2024-08-19 12:00:54

您必须以 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/部署/dev/docs/?class=Ext.form.FormPanel

[2] http://www.extjs.com/deploy/dev/docs/?class=Ext.Component

You're going to have to load and send the fields in a format ExtJS understands. The simplest way, if you don't mind coupling directly to the ExtJS format, would be to generate the ExtJS template style on the backend. In that case, your php script would generate something like this:

new Ext.form.FormPanel({
  width: 350,
  defaultType: 'textfield',
  items: [{
    xtype: '<?php echo $field ?>',
    value: '<?php echo $value ?>' 
  }]
});

Obviously, you could rearrange this so the "items" array is built up beforehand in a loop, and you can add as many items as you need.

Also, depending on how you set this up, you can also just return the array of items and add them to the form on the fly, removing the need to send the "new Ext.form.. etc" portion, and decoupling your code a little better. Personally, that's the way I'd go.

Edit:

In reply to your comment, if you return the JSON array in a proper ExtJS structure, all you'll need to do is use the "panel.add(myItems);" [1] method, and possibly a call to "panel.doLayout();" to force it to re-render nicely.

Check out the details on "components" [2] for how the xtype works.

[1] http://www.extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel

[2] http://www.extjs.com/deploy/dev/docs/?class=Ext.Component

稚然 2024-08-19 12:00:54

我知道这是一篇旧帖子,但无论如何我都会把它顶起来,因为它首先出现在我的 Google 搜索中。

我很幸运从 Ext.Ajax.request 返回一个 JSON 字符串, eval() 它(我知道,我知道,邪恶 - 但它有效并且 Ext.Decode 无论如何使用 eval) - 然后将 eval 的结果传递到Panel.add(Ext.ComponentManager.create(eval_result));

希望这对某人有帮助。

I know this is an old post, but I'll bump it anyways because it came up first in my Google Search.

I have had luck with returning a JSON String from an Ext.Ajax.request, eval() it (I know, I know, evil - but it works and Ext.Decode uses eval anyways) - then pass the results of the eval into Panel.add(Ext.ComponentManager.create(eval_result));

Hope this helps someone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文