2010-01-19 2 views
11

dijit.form.FilteringSelect близок к тому, что мне нужно. Я пробовал много способов сделать то, что хочу, но, будучи начинающим диджитом, я никогда не знаю, пойду ли я в правильном направлении.dijit.form.FilteringВыбрать с подстрокой поиск

Когда я набираю FilteringSelect, я вижу только параметры, начиная с того, что я набрал. Как запрос на value + "*"
Мне нужно, чтобы увидеть любой параметр, который имеет то, что я печатаю где угодно. Как запрос на "*" + value + "*"

Так что, если есть «Apple», «Banana» и «Orange», и я набираю «e», я должен видеть «Apple» и «Orange». Если это возможно, строка поиска подчеркнула: «Appl х», «Оранг х»

Я думаю, мне нужно немного умное хранение данных, но нигде я иду выгляжу как тупик. Я что-то упускаю, или должен ли я сделать это совершенно по-другому?

ответ

15

Вы хотите использовать queryExpr атрибут:

var f = new dijit.form.FilteringSelect({ 
... 
queryExpr: "*${0}*", 
... 
}, node); 

Обратите внимание на * до и после $ {0}.

+1

Обратите внимание, что если вы устанавливаете 'queryExpr' на что-либо, кроме значения по умолчанию (начало поискового запроса), вы также можете установить каждый раз при поиске по умолчанию' searchDelay: 1000' (1 секунду или около того) b/c, он перезаписывает то, что пользователь напечатал w/верхний термин. –

+2

В качестве альтернативы задержке вы можете установить 'autoComplete' значение false. https://bugs.dojotoolkit.org/ticket/13915 –

0

В нашем проекте мы решили эту проблему с исправлением dojo.data.util.filter, переписывая метод patternToRegExp.

4

Эй! Вам нужно добавить queryExpr = "$ {0}" в компонент filteringselect.

По умолчанию это $ {0} *, то есть он ищет строки, начинающиеся с того, что вы набрали.

Как подсказка для других, в JSP мне пришлось изменить запрос expr. to queryExpr = "\ $ {0}".

+0

Документы также предполагают, что вы должны использовать 'highlightMatch =" все "в сочетании с этим (но, похоже, это не подходит для меня как до dojo1.3) –

+1

+1 для подсказки JSP. –

0

После долгих попыток я мог запустить его, подсказка Мады была правильной, но пропустить * до и после. Правильный запросStr (в JSP) равен '*\${0}*'

Смежные вопросы