Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Cвязанные Combobox (https://javascript.ru/forum/extjs/27116-cvyazannye-combobox.html)

Rulila 03.04.2012 10:35

Cвязанные Combobox
 
Просьба дать пример 2 связанных комбобоксов, т.е. оба грузятся из бд(JSON типа {success:true, data:[{..},{..},..]}) . При изменении 1 значения в 1 комбо изменяются данные во 2. например 1 комбо отвечает за мед. учереждения а второй за соответствующие ей специализации врачей. Extjs4. У меня все вроде работает но если в 1 а потом во 2 комбо выбрать значения, а потом вернуться в 1 и изменить на новое и попробовать войти в комбо специализаций, они вроде подгрузятся( их значения на темном фоне) но выпадает окошечко будто загрузка продолжается, хотя всё загрузилось не знаю что делать. Вот мой пример. так что просьба подсказать что у меня не так, либо дать рабочий пример:) заранее благодарен))

var MainForm;

function SpecComboboxFillData(kodlpu)
{
    var prov=Ext.getCmp('SpecCombobox');
    if (typeof(prov)=="undefined")
    {
    var SpecCombobox = Ext.create('Ext.form.field.ComboBox', {
        fieldLabel: 'Выберите специализацию врача',
        id:"SpecCombobox",
        displayField: 'name',
        valueField: 'id',
        width: 500,
        store: "SpecStore",
        forceSelection: true,
        queryMode: 'local',
        lastQuery: ''
    });
    MainForm.add(SpecCombobox);
    Ext.getStore("SpecStore").load({params: {lpu:kodlpu}});
    }
    else
    {
        prov.clearValue();
        Ext.getStore("SpecStore").load({params: {lpu:kodlpu}});
    }
}

Ext.onReady(function(){
    MainForm=Ext.create('Ext.form.Panel', {
        title: 'Веб-регистратура',
        renderTo: Ext.getBody()
    });
    Ext.define('ComboboxModel', {
        extend: 'Ext.data.Model',
        fields: [        {
            name: 'id', 
            type: 'string'
        },
        {
            name: 'name',  
            type: 'string'
        }]
    });
    
    var LPUStore=Ext.create('Ext.data.Store', {
        model: 'ComboboxModel',
        storeId:"LPUStore",
        proxy: {
            type: 'ajax',
            url : 'php/LPUCombobox.php',
            reader: {
                type: 'json',
                root: 'data'
            }
        }
    })
    LPUStore.load();
    Ext.create('Ext.data.Store', {
        model: 'ComboboxModel',
        storeId:"SpecStore",
        proxy: {
            type: 'ajax',
            url : 'php/SpecCombobox.php',
            queryMode: 'local',
            reader: {
                type: 'json',
                root: 'data'
            }
        }
    })
    var LPUCombobox = Ext.create('Ext.form.field.ComboBox', {
        fieldLabel: 'Выберите Мед. Учреждение',
        id:"LPUCombobox",
        width: 500,
        displayField: 'name',
        forceSelection: true,
        store: "LPUStore",
        queryMode: 'local',
        lastQuery: '',
        listeners: {
            select: function(combo, records, eOpts)
            {
                var lpu=records[0].data.id;
                SpecComboboxFillData(lpu);
            }
        }
    });
    MainForm.add(LPUCombobox);
});


Часовой пояс GMT +3, время: 14:56.