Как сообщить элементу selectfield из ответа Ext.Ajax.request?

Мне нужно сообщить элементу sencha selectfield из обратного вызова Ext.Ajax.request({})

У меня есть этот код, например,

Ext.Ajax.request({
            url: '/express/EXPRESSVE00007_es.jsp',
            timeout: 90000,
            params: {
                evento  : action,
                cookie: document.cookie,
                NAME    : Ext.getCmp("txtName").getValue(),
                LAST    : Ext.getCmp("txtLast").getValue(),
                SEX : Ext.getCmp("txtSex").getValue()
            },
            success: function(r, o) {
                var response = r.responseText
                response = response.trim()
                response = response.replace('\n', '').replace('\r', '')
                var jsonResponse = Ext.decode(response)
                Ext.Msg.alert(jsonResponse)
            },
            failure: function() {
                Ext.Msg.show({
                    title: "Failure",
                    msg: "Error, failed response",
                    buttons: Ext.Msg.OK,
                    icon: Ext.MessageBox.ERROR
                })
           }
})

и мой выбор,

{
    xtype: 'selectfield',
    id: 'selSex',
    name: 'select',
    label: '*Sex',
    placeHolder: 'Select...',
    displayField: 'desc',
    hiddenName: 'second-select',
    options: [
        {desc: '',  value: ''},
        {desc: '', value: ''}
    ]
}

В этом случае мне нужно сообщить поля "desc" и "value" из обратного вызова Ext.Ajax.request, но я не знаю. Пожалуйста, помогите мне.

2 ответа

Вы можете сообщить selectfield из Ext.Ajax.request обновив это store,

Вы можете объявить хранилище для хранения всех значений полей, а затем по ответу от request, вы можете перемешать хранилище данных, в которое selectfield привязан.

Например

{
    xtype: 'selectfield',
    store: sampleStore,
    valueField:'value',
    displayField:'desc',
}

и обновить значения магазина на Ext.Ajax.requestответ, как это,

Ext.StoreMgr.get('sampleStore').load();

Вы можете сделать ниже

Test = Ext.regModel('Test', {
    fields: [{
        name: 'desc',
        type: 'string'
    }, {
        name: 'value',
        type: 'string'
    }]
});

exStores = new Ext.data.Store({
     model: 'Test',
    autoLoad: false });

и выберите поле

{
    xtype: 'selectfield',
    store: exStores,
    id: 'selSex',
    name: 'select',
    label: '*Sex',
    placeHolder: 'Select...',
    valueField:'value',
    displayField:'desc',
}

и запрос ajax

Ext.Ajax.request({
            ...
            success: function(r, o) {
                var response = r.responseText
                response = response.trim()
                response = response.replace('\n', '').replace('\r', '')
                var jsonResponse = Ext.decode(response)
                exStores.loadData(jsonResponse, false);
                Ext.Msg.alert(jsonResponse)
            },
            ...
})

Надеюсь, это поможет.

Другие вопросы по тегам