Очистка поля ввода списка ExtJS - PullRequest
1 голос
/ 14 января 2011

У меня есть Ext.form.ComboBox со следующими свойствами:

fieldLabel: 'Regiune',
valueField: 'id',
displayField: 'reg',
id: 'cbRegR',
typeAhead: true,
store: new Ext.data.JsonStore({...}),
mode: 'local',
emptyText: '',
listeners:{...}

Проблема в том, что мне нужно вручную удалить поле ввода в поле со списком после выбора значения в раскрывающемся списке, чтобы просмотреть всеэлементы списка.Дело в том, что в списке отображаются только элементы, начинающиеся с букв в поле ввода.

Как очистить поле ввода при раскрывающемся списке?Я попробовал следующее, но это не работает:

listeners: { 'expand': function() { cbRegR.clearValue(); } }

Кажется, что это легко, но это не так для меня .. Какие-нибудь яркие идеи?Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 14 января 2011

Добавление свойства config в ваш выпадающий список

triggerAction: 'all'

может помочь, без необходимости регистрировать обработчик событий раскрытия или очистить значение поля со списком

1 голос
/ 14 января 2011

Ext JS ComboBox-es, как вы уже знаете, свойственно фильтровать элементы списка на основе значения поля.

Вы можете ощутимо переопределить метод expand (), сделав дополнения, чтобы очистить значение перед его отображением в списке. EG:

Ext.override(Ext.form.ComboBox, {

    expand : function(){
        if(this.isExpanded() || !this.hasFocus){
            return;
        }
        //ADDITIONS HERE:
        this.clearValue();
        this.doQuery("", true);
        //ADDITIONS END HERE

        if(this.title || this.pageSize){
            this.assetHeight = 0;
            if(this.title){
                this.assetHeight += this.header.getHeight();
            }
            if(this.pageSize){
                this.assetHeight += this.footer.getHeight();
            }
        }

        if(this.bufferSize){
            this.doResize(this.bufferSize);
            delete this.bufferSize;
        }
        this.list.alignTo.apply(this.list, [this.el].concat(this.listAlign));

        // zindex can change, re-check it and set it if necessary
        this.list.setZIndex(this.getZIndex());
        this.list.show();
        if(Ext.isGecko2){
            this.innerList.setOverflow('auto'); // necessary for FF 2.0/Mac
        }
        this.mon(Ext.getDoc(), {
            scope: this,
            mousewheel: this.collapseIf,
            mousedown: this.collapseIf
        });
        this.fireEvent('expand', this);
    }

});
0 голосов
/ 14 января 2011

Использование cbRegR не будет работать, потому что это неопределенная переменная. Либо использовать

listeners: { 'expand': function() { Ext.getCmp('cbRegR').clearValue(); } }

или более сложный подход:

listeners: { 'expand': function(self) { self.clearValue(); } }
0 голосов
/ 14 января 2011

Событие расширения хорошее, но вы должны быть осторожны с областью действия.

listeners: {
 'expand': function() {
    cbRegR.clearValue(); 
 },
 scope:this
}

Помогает ли настройка области?

...