Extjs 4.2.1:如何在表单加载时更改远程组合

时间:2015-06-15 20:49:23

标签: json forms extjs combobox

我想在表单面板上更新一些组合(使用远程json存储)。 当我只是单击组合(在加载表单数据之前),它运行良好,加载和显示有效的项目。 但是,当我执行MyForm.getForm()。load(...)组合项目更改为" 2"。这是ID,但不是值。

请帮助我,如何正确更新这样的组合并显示json中带有特定ID的值?

型号:

   Ext.define('OwnerUserModel', {
        extend: 'Ext.data.Model',
        fields: [
            { name: 'id', type: 'int' },
            { name: 'VarName', type: 'string' }
        ]
    });

商店:

    var OwnerUserStore = Ext.create('Ext.data.Store', {
        model   : 'OwnerUserModel',
        autoSync: true,
        proxy: {
            type: 'ajax',
            url : 'http://localhost/1/Super.php?Action=GetObjectFormParams&GetAgents=1',
            reader: 'json'
        },
        autoLoad: true
    });

带有组合项目的表单面板:

    var MyForm = Ext.create('Ext.form.Panel', {
        header: false,
        title: 'My super Form',
        //height: 300,
        url: 'Super.php',
        //width: 1100,
        bodyPadding: 10,
        defaultType: 'textfield',
        items: [
             ...
             {
             fieldLabel  : 'Agent',
                allowBlank  : false,
                name        : 'OwnerUserId',
                id          : 'OwnerUserId',
                queryParam  : 'GetAgents',
                displayField: 'VarName',
                valueField  : 'id',
                xtype       : 'combo',
                store       : OwnerUserStore,
                tpl: Ext.create('Ext.XTemplate',
                    '<tpl for=".">',
                    '<div class="x-boundlist-item">{VarName}</div>',
                    '</tpl>'
                ),
                width: 353,
                padding:  '0 0 0 30',
                editable: false
            }

Json对商店负载的回复:

[{"id":"1","VarName":"89031230000 user1 phone"},{"id":"2","VarName":"89161200000 user2 phone"
}]

1 个答案:

答案 0 :(得分:0)

我已经改变了项目的结构,它开始工作了!

在我看来,商店或模特描述中存在一些错误配置......

但我无法理解究竟是什么:-)有什么区别?有什么建议吗?

{
                    fieldLabel  : 'Agent',
                    xtype       : 'combo',
                    id          : 'OwnerUserId',
                    name        : 'OwnerUserId',
                    triggerAction:  'all',
                    forceSelection: true,
                    editable    : false,
                    allowBlank  : false,
                    queryParam  : 'GetAgents',
                    mode        : 'remote',
                    displayField:'VarName',
                    valueField  : 'id',
                    width       : 353,
                    padding     :  '0 0 0 30',
                    store: Ext.create('Ext.data.Store', {
                        fields: [
                            {name: 'id'},
                            {name: 'VarName'}
                        ],
                        autoLoad: true,
                        proxy: {
                            type: 'ajax',
                            url: 'http://localhost/1/Super.php?Action=GetObjectFormParams&GetAgents=1',
                            reader: {
                                type: 'json'
                            }
                        }
                    }
                )
                }