1

我需要从 Ext.Ajax.request({}) 的回调中通知一个 selectfield sencha 元素

我有一个这个代码,例如,

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: ''}
    ]
}

在这种情况下,我需要从回调 Ext.Ajax.request 中通知“desc”和“value”字段,但我不知道。请帮我。

4

2 回答 2

1

你可以在下面做

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)
            },
            ...
})

希望这有帮助。

于 2012-06-04T07:23:04.300 回答
1

您可以selectfield通过Ext.Ajax.request更新它的store.

您可以声明一个存储来存储所有字段值,然后根据来自 的响应request,您可以对绑定的数据存储进行洗牌selectfield

例如

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

Ext.Ajax.request并像这样更新 ' 响应上的存储值,

Ext.StoreMgr.get('sampleStore').load();
于 2012-06-03T19:28:43.367 回答