ExtJs4 - автозаполнение ComboBox не отображает пустой текст - PullRequest
1 голос
/ 13 сентября 2011

У меня есть комбинированное окно со следующей конфигурацией.

{
    fieldLabel:'Service',
    xtype:'combo',
    displayField: 'srvcDesc',
    store: storeServiceCodeVar,
    valueField:'srvcCD',
    id:'serviceCodeId',
    name:'serviceCodeName',
    queryMode: 'remote',
    queryDelay:100,
    typeAhead: true,
    minChars:0,
    hideTrigger:true,
    forceSelection:true,
    maxHeight:23,
    deferEmptyText:false,
    autoSelect:true,
    fieldStyle:'text-transform:uppercase',
    listConfig: {
        loadingText: 'Loading...',
        // Custom rendering template for each item
        getInnerTpl: function() {
            return '<table width="200px"><tr><td height="5"></td></tr><tr valign="top"><td>Code:{srvcCD}</td></tr><tr><td height="2"></td></tr><tr valign="top"><td>Description:{srvcDesc}</td></tr><tr><td height="5"></td></tr></table>';
        },
        emptyText:'No Values Found'
    }
}

Проблема заключается в том, что когда данные не возвращаются с сервера, тогда emptyText (который имеет значение - значения не найдены) отображается дляможет быть миллисекунда и уходит.Я хочу, чтобы он оставался там до следующего запроса, если его уволят.Как это возможно.Я попытался с deferEmptyText, но не повезло.

Может ли кто-нибудь пролить свет на это.Я использую ExtJS 4, и поведение в IE9 и Mozilla одинаковое.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

При переходе через источник не похоже, что есть какая-либо ссылка на listConfig.emptyText, используемый для определения, следует ли устанавливать высоту элемента в число, отличное от нуля.

IВ итоге мы переписали функцию alignPicker(), которую Ext.form.field.ComboBox унаследовал от Ext.form.field.Picker, и добавили проверку для listConfig.emptyText.

Ext.override(Ext.form.field.ComboBox, {

    alignPicker: function() {
        var picker, height;

        if (this.isExpanded) {
            // Get the picker component.
            picker = this.getPicker();

            if (this.matchFieldWidth) {
                // Set the default height to null, since we don't 
                // automatically want to have the height changed.
                height = null;

                // If our store exists, but the count is zero
                // and we've got no emptyText defined...
                if (picker.store && 
                    picker.store.getCount() === 0 && 
                    Ext.isEmpty(this.listConfig.emptyText)) {
                    // ...we set the height to zero. 
                    height = 0;
                }

                // Set the size of the picker component.
                picker.setSize(this.bodyEl.getWidth(), height);
            }

            if (picker.isFloating()) {
                this.doAlign();
            }
        }
    }

});

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

0 голосов
/ 21 декабря 2011

Слово предупреждения здесь.Я нахожусь на ExtJs 4-0-6 и похоже, что в Ext.form.field.ComboBox есть какой-то код, и он больше не зависит только от наследования метода от Ext.field.form.Picker.

Итак, вместо приведенного выше кодатеперь следует переопределить код непосредственно в Ext.field.form.Picker, а не в ComboBox.

Но, надо признать, надеюсь, что Сенча исправит это в ближайшее время в 4.1.

...