Опция «Поиск всех» в Javascript Combobox - PullRequest
0 голосов
/ 24 августа 2011

У меня есть объект ext.form.Combobox, который динамически заполняется ext.data.JsonStore.Пользователь может ввести ключ поиска для фильтрации по списку и выбрать один из параметров фильтра.Я бы хотел, чтобы в раскрывающемся списке была выбрана опция «Все».Как сделать так, чтобы эта опция всегда отображалась в динамическом списке ComboBox?То, как он настроен сейчас, отображается только в том случае, если пользователь начинает вводить «a..l..l ..» в поле поиска.

Есть ли поисковый запрос, который я могу применить к нему, который является групповым символом, поэтому он будет отображаться независимо от того, каков поисковый термин?

Спасибо

Ответы [ 3 ]

0 голосов
/ 25 августа 2011

Просматривая часть исходного кода Ext3, можно легко получить нужную функциональность, переопределив функцию filterBy на Ext.data.Store и перехватив функцию, чтобы позволить записи «Все» через:

Ext.ux.AllJsonStore = Ext.extend(Ext.data.JsonStore, {

    filterBy: function(fn, scope) {
        var allFn = Ext.util.Functions.createInterceptor(fn, function(record, id) {
            if (record.data.display == "All") {
                return true;
            }
        });
        return Ext.ux.AllJsonStore.superclass.filterBy.call(this, allFn, scope);
    }

});

Тогда, где бы вы ни создавали свой магазин Ext.form.ComboBox, используйте вместо этого магазин:

var combo = new Ext.form.ComboBox({
    ...
    store: new Ext.ux.AllJsonStore({...})
    ...
});
0 голосов
/ 30 августа 2011

Я закончил тем, что установил свойство beforeQuery для функции, которая изменяет значение строки поиска для опции «Поиск всех» на текущий запрос.

Что-то вроде ..

combobox.on('beforeQuery', function(q) {
  searchStore.getAt(searchStore.getCount()-1).data.search_string = q.query
}

Это работает для моего кода, потому что опция Search All является последней, добавленной в хранилище поиска. В противном случае вам потребуется доступ к записи «Поиск всех» другим способом.

0 голосов
/ 24 августа 2011

Я обычно обхожу это путем установки опции конфигурации emptyText в комбо 'All'. Таким образом, когда в поле со списком вообще не задано значение .. (и когда оно отправляется на сервер, оно также отправляет пустое значение), вы можете предположить, что пользователь не хочет фильтровать это поле.

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