Комбинация ExtJs заставила выбрать первый элемент (с примером кода) - PullRequest
1 голос
/ 13 мая 2011

У меня есть комбо B, которое загружается другим комбо A (запускается слушателем 'select')После заполнения B я вижу все элементы, но теперь из выпадающего списка в Combo B,Я вынужден выбрать первый элемент с помощью мышиЯ могу выбрать другой пункт только набравПожалуйста помоги!!!!код для Combo A


{
    xtype: 'combo',
    displayField: 'value',
    emptyText: 'Please select A first',
    fieldLabel: 'Combo A',
    id: 'comboA',
    maxHeight: 240,
    mode: 'local',
    triggerAction: 'all',
    typeAhead: true,
    typeAheadDelay: 100,
    valueField: 'id',
    store: new Ext.data.JsonStore({
        url: '/cgi-bin/server.cgi',
        fields: ['id', 'name'],
        baseParams: {
            action: 'getAList'
        },
        autoLoad: true,
        root: 'aList'
    }),
    listeners: {
        'select': {
            fn: function(){
                var comboB = Ext.getCmp('comboB');
                comboB.clearValue();
                comboB.store.removeAll();
                comboB.store.reload({
                    params: {
                        id: this.getValue()
                    }
                })
            }
        }
    }
}

Код для комбо B:


{
    xtype: 'combo',
    displayField: 'item',
    editable: true,
    emptyText: 'Select a Combo A first',
    fieldLabel: 'Combo B',
    id: 'comboB',
    lazyInit: true,
    maxHeight: 240,
    mode: 'local',
    triggerAction: 'all',
    typeAhead: true,
    valueField: 'id',
    width: 220,
    store: new Ext.data.JsonStore({
        url: '/cgi-bin/server.cgi',
        root: 'bList',
        autoLoad: false,
        fields: ['id,', 'item'],
        baseParams: {
            action: 'getBList'
        },
        listeners: {
            'beforeload': function(){
                Ext.getCmp('comboB').disable();
            },
            'load': function(){
                Ext.getCmp('comboB').enable();
            }
        }
    })
}

1 Ответ

0 голосов
/ 13 мая 2011

Не уверен, что точно здесь не так, но я подозреваю, что этот кусок в вашем комбоА не срабатывает, как ожидалось -

comboB.store.reload({
                params: {
                    id: this.getValue()
                }
            })

Таким образом, comboB все еще отключен. когда вы нажимаете триггер comboB, он загружает хранилище, и прослушиватель загрузки хранилища comboB запускается, как и ожидалось, чтобы включить комбо.

Попробуйте добавить несколько отладочных операторов или пройтись по коду выше.

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