Extjs 4.2 加载名称为 [] 的表单数据

Posted

技术标签:

【中文标题】Extjs 4.2 加载名称为 [] 的表单数据【英文标题】:Extjs 4.2 load form data with [] in name 【发布时间】:2015-05-11 15:16:39 【问题描述】:

我有一个 extjs 表单,其名称类似于

udField[1] udFIeld[2]

我可以毫无问题地将它保存在服务器端。但是当我想加载表单时,它不会填充值....

这是来自 ud dield 的示例:


        labelSeparator: config.required == 1 ? ': <span style="color:red">*</span>' : ':',
        allowBlank: config.required == 0,
        emptyText: config.options.blankText,
        xtype: 'textfield',
        name: 'udFields[' + config.options.udFieldId + ']', 
        flex: 0,
        fieldLabel: Ext.lang(config.display_name),
    

这是我加载它的方式:

 Ext.getCmp('rootform').getForm().load(
            url: 'ajax/Freetext/Article/LoadSingle',
            waitMsg: Ext.lang('t_warenkorb_wird_geladen'),
            params: 
                cartarticle_id: cartarticleId,
                sid: config.sid
            ,
            success: function (form) 
some checks and other stuff

我从服务器得到正确的响应,这是响应 json 数据:

amount: "1"
cartarticle_id: "xxx"
catalogpartner_id_freetxt: "xxx"
delivery_date: "15.04.2015"
description_long: "test "
description_short: "test"
manufacturer_aid: "xxx"
manufacturer_name: "xxxxxx"
order_unit: "PAK"
price_amount: "122.12"
remarks: "test"
supplier_aid: "test"
udFields[123]: "test"

但是这该死的东西不会加载任何东西......任何人都有一些想法???

ps 这里是带有模糊数据的整个 json 字符串:

"success":true,"data":"catalogpartner_id_freetxt":"12","description_short":"test","cartarticle_id":"12","amount":"1","order_unit":"PAK","price_amount":"122.12","delivery_date":"15.04.2015","description_long":"test ","remarks":"test","supplier_aid":"test","manufacturer_name":"Datenbank feiger Text (@todo)","manufacturer_aid":"Datenbank feiger Text (@todo)","udFields[123]":"test","debug":["11.05.2015 16:58:20.860232 params:Array\n(\n    [cartarticle_id] => 312\n    [sid] => 132\n)\n<br><BR>"]

【问题讨论】:

可以定义一个阅读器并设置useSimpleAccessors: true 如果我能达到这样的目标,我会尝试。如果现在,那么我必须定义一个自定义渲染器。 Aaaaa 看看你的意思。我不使用商店,我使用表单提交功能。没有任何附属商店。 看看:docs.sencha.com/extjs/4.1.1/#!/api/Ext.form.Basic-cfg-reader 已经在上面了。但我迷失了如何为我的数据定义一个阅读器来设置映射权。像从 udFields[1363] -> 从数组加载。因为数字 1363 也来自数据。并且不是预先确定的 【参考方案1】:

我不知道如何配置它。尝试了各种方法。最后我从一个数组中做了一个成功的解析器...... 不漂亮,但我可以依赖的唯一解决方案....

  success: function (form, data) 
                if (data.result.data)
                    if (data.result.data.udFields) 
                        for (var key in data.result.data.udFields) 
                            var element = data.result.data.udFields[key];
                            var input = form.findField('udFields' + element.id);
                            if (input)
                                input.setValue(element.value);
                        
                    ...

【讨论】:

以上是关于Extjs 4.2 加载名称为 [] 的表单数据的主要内容,如果未能解决你的问题,请参考以下文章

在 extjs 4.2 中将数据从商店设置到具有网格的表单面板

ExtJS 4.2 组件介绍

ExtJS 4.2 - 动态加载日期选择器值 - 新手Q.

ExtJS 4.2 Date组件扩展:添加清除按钮

在 ExtJs 中为行扩展器加载 ajax 数据

ExtJs 4.2:TreePanel 递归根节点加载而不是子节点