powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Extjs поиск по подстроке в Combobox
15 сообщений из 15, страница 1 из 1
Extjs поиск по подстроке в Combobox
    #37466672
neural_network
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите, как в Ext.form.ComboBox сделать поиск по подстроке.
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37466805
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я Вас правильно понял - начните с mode
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37466845
neural_network
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft,

mode определяет, откуда данные. у меня - remote.
с подгрузкой данных проблем нет. список заполняется.

надо, чтоб пользователь мог ввести какую-то подстроку и по ней отфильтровались бы отображаемые в списке данные. показывались бы только те строки, которые эту подстроку содержат
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37466865
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neural_networkпоказывались бы только те строки, которые эту подстроку содержат
Гм... Скорее всего прийдется что-то мутить свое... Посмотрите как штатно ищутся строки которые начинаются с введенной подстроки и сделайте, например, свой extend'ер...
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37466990
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
достаточно просто слегка подхачить стор (для Ext4, для старого по аналогии наковырять)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Ext.define('App.store.ComboStore', {
	extend: 'Ext.data.Store',

	/* bla bla bla */
	
	filter: function(filters, value) {
		if (Ext.isString(filters)) {
			this.callParent([{
				property: filters,
				value: value,
				anyMatch: true	// filter on any substring occurance
			}]);
		}
		else
			this.callParent(arguments);
	}
});
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37467317
neural_network
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы,

у меня extjs 3.0.

есть вот такой вариант:

keydown: function (field, e) {
store.filter('name', value, true, false);
}

только не пойму, как введенный текст получить.
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37467696
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не нужно лезть в комбобокс, поиском и фильтрацией по введенным данным занимается стор. Копайся в исходниках и дебагь, у меня поиск и реализация кода выше заняли когда-то около часа.
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37471136
neural_network
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы,

а ваш способ работает для remote store?
у меня не получилось. filter для него вообще не вызывается. хотя для local все прекрасно.
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37471274
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно отличать remote store и remote filtering. В каком месте на самом деле стор - неважно, фильтровать он будет в любом случае после того, как данные будут загружены.
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37471312
neural_network
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы,

у меня remote store.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
MyStore = Ext.extend(Ext.data.Store, {
  filter : function(property, value, anyMatch, caseSensitive){
    MyStore.superclass.filter.call( this , property, value, true, false);
  }
});

var store =  new  MyStore({
  proxy:  new  Ext.data.HttpProxy({
    method: 'POST',
    url: 'LoadServlet' 
}),

  reader:  new  Ext.data.JsonReader({
    root: 'results',
    totalProperty: 'total',
    id: 'id'
  }, [
    {name: 'id', mapping: 'id'},
    {name: 'name', mapping: 'name'},
  ])
});


так вот этом случае filter не вызывается при вводе значений в поле комбобокса, хотя явно вызвать можно.
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37471317
neural_network
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыфильтровать он будет в любом случае после того, как данные будут загружены.

это понятно и вполне устраивает, если бы работало
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #37471552
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну дебагь и смотри исходники, я же написал что этот код я делал для extjs4
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Extjs поиск по подстроке в Combobox
    #38022687
fenixpb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ext.override(Ext.form.ComboBox, {

anyMatch: true, //добавляем параметр

doQuery: function (q, forceAll) {
if (q === undefined || q === null) {
q = '';
}
var qe = {
query: q,
forceAll: forceAll,
combo: this,
cancel: false
};
if (this.fireEvent('beforequery', qe) === false || qe.cancel) {
return false;
}
q = qe.query;
forceAll = qe.forceAll;
if (forceAll === true || (q.length >= this.minChars)) {
if (this.lastQuery !== q) {
this.lastQuery = q;
if (this.mode == 'local') {
this.selectedIndex = -1;
if (forceAll) {
this.store.clearFilter();
} else {

//this.store.filter(this.displayField, q); - исходный вариант

this.store.filter(this.displayField, q, this.anyMatch); // anyMatch=true в коде store.filter указывает что искать нужно по всей строке, а не только сравнивать начало
}
this.onLoad();
} else {
this.store.baseParams[this.queryParam] = q;
this.store.load({
params: this.getParams(q)
});
this.expand();
}
} else {
this.selectedIndex = -1;
this.onLoad();
}
}
}
}
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #38023299
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынць
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Ext.create('Ext.form.field.ComboBox', {
...
    queryMode: 'local',
    listeners: {
        beforequery: function(qe){
            qe.query = new RegExp(qe.query, 'i');
            qe.forceAll = true;
        }
    }
});
...
Рейтинг: 0 / 0
Extjs поиск по подстроке в Combobox
    #38023306
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fenixpb, здесь полнее...

P.S. Это я так - до купы... Шоб было...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Extjs поиск по подстроке в Combobox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]