В ExtJS getForm (). Load () загружает значения поля со списком? - PullRequest
2 голосов
/ 04 апреля 2011

У меня есть форма со списком.Поле со списком загружает данные через хранилище Json, и я использую form.getForm (). Load (url: 'URL') для загрузки данных форм также из хранилища Json.

Когда данные загружаются вВ форме, которую я вижу через Firebug, что он получает правильное значение, комбо затем отображает правильное соответствующее отображаемое значение.Когда я смотрю на HTML в FireBug для hiddenField, он говорит, что значение = "DISPLAYVALUE", а не значение = "VALUE".Когда я затем выбираю любое значение из комбо, оно меняется на правильное значение = "VALUE".

Конечно, если пользователь никогда не меняет комбо, отправляется неправильное значение.Это по замыслу / ограничению или я что-то упускаю.

Действительно ли мне нужно загружать и проверять данные для каждой комбинации перед тем, как я выполню getForm (). Load ()?не имеет ли смысл для load () просто загружать полные данные, даже если это означает загрузку данных из хранилища?

Я включил упрощенный пример кода, который имеет проблему.

    Ext.onReady(function(){

    var frmClientRecord = {
        xtype: 'form',
        items: [
            {
                fieldLabel: 'Advisor',
                xtype: 'combo',
                id: 'advisorName',
                displayField: 'Advisor',
                valueField: 'advisorId',
                hiddenName: 'advisorsId',
                mode: 'remote',
                store: new Ext.data.Store({
                    autoLoad: true,
                    proxy: new Ext.data.HttpProxy({
                        url: '/referrals/index.php/advisors/read',
                        method: 'POST'
                        }),
                    reader: new Ext.data.JsonReader({
                        root: 'results',
                        fields: [
                            {name: 'advisorId'},
                            {name: 'Advisor'}
                        ]
                    })
                })
            }
        ]
    }

    frmClientRecordCmp = new Ext.FormPanel(Ext.apply(frmClientRecord));


    frmClientRecordCmp.getForm().load({
        url: '/referrals/index.php/clients/getbyid/100',
    })

    frmClientRecordCmp.render(document.body);
});

JSON FOR COMBO

({"results":[{"Advisor":"Chris","advisorId":33},{"Advisor":"Fawzia","advisorId":2},{"Advisor":"Kent","advisorId":3},{"Advisor":"Rob","advisorId":4},{"Advisor":"Stephanie","advisorId":5}]})

JSON FOR FORM

{success: true, data: {"advisorsId":33}}

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Это может произойти, если ваша форма загружается за до .(Учитывая, что остальная часть вашего кода выглядит нормально)

Я подозреваю, что это разрешится, если вы визуализируете свою форму перед ее загрузкой.(переместите frmClientRecordCmp.render(document.body); на одну строку вверх в вашем примере кода)

РЕДАКТИРОВАТЬДва момента для рассмотрения -

  1. Вы уверены в комбинированном магазине завершено загрузка до загрузки формы?
  2. Взглядпри документации ComboBox valueField похоже, что вызов combo.setValue может быть необходим после загрузки формы.Что-то вроде -

    frmClientRecordCmp.getForm (). Load ({url: '/referrals/index.php/clients/getbyid/100', success: function (form, action) {form.findField('advisorName'). setValue (action.result.data.advisorId);}});

0 голосов
/ 04 апреля 2011

Это была проблема, которую я вызвал, используя идентификатор: 'advisorName'. Я возвращал поле с именем 'advisorName', поэтому оно заполняло его, хотя я указывал значение hiddenName. Мораль состоит в том, чтобы убедиться, что ваш идентификатор уникален, а не имя поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...