ExtJS - скрытие ComboBox на основе другого значения Combo - PullRequest
1 голос
/ 20 июля 2011

У меня странная проблема, когда я определяю, что комбо имеет скрыто: true , которое работает нормально, но когда я показываю комбинированный список и выбираю из него значение, оно скрывается.Вот пример кода:

(я использую некоторые пользовательские расширенные ComboBox, но это не проблема)

Первый ComboBox:

var bulkImportType = {
    xtype: 'ibwComboLocal',
    fields: ['id', 'name'],
    data: [[1, '3rd Party Tag'], [2, 'Image'], [3, 'Template']],
    fieldLabel: 'Type',
    listeners: {
        'select': function(combo, record, index) {
            if (record.get('name') == 'Template') {
                this.bulkImportTemplateCombo.show();
            } else {
                this.bulkImportTemplateCombo.hide();
            }
        }, scope: this
    }
};

Второй ComboBox (отображается только тогда, когда первый Combo == Шаблон)

var bulkImportTemplate = {
    xtype: 'ibwComboJson',
    hidden: 'true',
    url: 'http://itads-dl06.tweb.aol.com:3080/IBW/templates?returnJson=1',
    ref: '../bulkImportTemplateCombo',
    root: 'templateList',
    fieldLabel: 'Template'         
};

Скрытие / отображение работает нормально, но кажется, что когда я выбираю значение из «Шаблон»выпадающий список, он повторно запускает конфигурацию и скрывает поле со списком.Выбор значения из других комбо в форме, кажется, делает то же самое, но ТОЛЬКО те, которые являются удаленными вызовами (из URL, который возвращает JSON для комбо).

Любые исправлениядля удаленного комбо "сброса" формы конфигурации?

РЕДАКТИРОВАТЬ: Весь код для ComboBox.Все они просто отображаются внутри FormPanel.

var inventorySelectDropdown = {
    xtype: 'ibwComboLocal',
    fields: ['id', 'name'],
    data: [[1, 'O&O'], [2, 'Network']],
    value: 1, // set to O&O by default
    fieldLabel: 'Inventory'
};

var bulkImportType = {
    xtype: 'ibwComboLocal',
    fields: ['id', 'name'],
    data: [[1, '3rd Party Tag'], [2, 'Image'], [3, 'Template']],
    fieldLabel: 'Type',
    listeners: {
        'select': function(combo, record, index) {
            if (record.get('name') == 'Template') {
                this.bulkImportTemplateCombo.show();
            } else {
                this.bulkImportTemplateCombo.hide();
            }
        }, scope: this
    }
};

var bulkImportTemplate = {
    xtype: 'ibwComboJson',
    hidden: 'true',
    url: 'xxx',
    ref: '../bulkImportTemplateCombo',
    root: 'templateList',
    fieldLabel: 'Template'         
};

var vendorDropdownBulk = {
    xtype: 'ibwComboJson',
    url: 'xxx',
    root: 'vendorList',
    fieldLabel: 'Vendor'
};

var bulkImportUploadField = {
    xtype: 'fileuploadfield',
    fieldLabel: 'Select Import File',
    width: 400
};

1 Ответ

0 голосов
/ 19 июля 2017

В цикле if прослушивателя «select» после вызова функции show () добавьте следующий оператор:

this.bulkImportTemplateCombo.setVisible(true)
...