2010-01-19 3 views
11

dijit.form.FilteringSelect가 내가 원하는 것에 가깝습니다. 나는 내가 원하는 것을 할 수있는 많은 방법을 시도했지만, dijit 초심자 인 나는 올바른 방향으로 가고 있는지 결코 알지 못한다.dijit.form.FilteringSelect 하위 문자열 검색

FilteringSelect에서 타이핑을 시작할 때 필자는 입력 한 것으로 시작하는 옵션 만 볼 수 있습니다. value + "*"
에 대한 쿼리와 마찬가지로 내가 원하는 것은 내가 입력 한 옵션을 보는 것입니다. "*" + value + "*"

"Apple", "Banana"및 "Orange"가 있고 "e"를 입력하면 "Apple"및 "Orange"가 표시되어야합니다. 가능하면 검색 문자열이 강조로, "출원 전자", "오랑우탄 전자"

을 나는 약간의 똑똑한 데이터 스토리지를 필요가 있다고 생각하지만, 어디서든 내가 막 다른 골목 같은 외모를 이동합니다. 나는 뭔가를 놓치고 있습니까? 아니면 완전히 다른 방식으로해야합니까?

답변

15

당신은 queryExpr 속성을 사용하려면 :

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

공지 사항을 * 이전과 $ 후 {0}.

+1

'queryExpr'을 기본값 (검색어의 시작) 이외의 값으로 설정하면 검색 할 때마다'searchDelay : 1000' (1 초 정도) b/c를 설정하는 것이 좋습니다. 사용자가 최상위 단어를 입력했습니다. –

+2

지연 대신에,'autoComplete'을 false로 설정할 수 있습니다. https://bugs.dojotoolkit.org/ticket/13915 –

0

우리 프로젝트에서는 dojo.data.util.filterpatternToRegExp 메서드를 덮어 쓰는 패치로이 문제를 해결했습니다.

4

안녕하세요! queryExpr = "$ {0}"을 filteringselect 구성 요소에 추가해야합니다.

기본적으로 $ {0} *입니다. 즉, 입력 한 문자로 시작하는 문자열을 검색합니다.

다른 사람들을위한 힌트로 JSP에서 쿼리 expr을 변경해야했습니다. to queryExpr = "\ $ {0}".

+0

입니다. docs는 또한 이것을 사용하여'highlightMatch = "all" "를 사용해야한다고 제안합니다 (그러나 dojo1.3에서 나에게 맞는 것은 아닙니다) –

+1

+1에 대한 JSP 힌트. –

0

많은 시간 후에 나는 그것을 달릴 수 있었고,마다 팁은 정확했지만 *와 그 이후를 놓친다. 올바른 queryStr (JSP)은 '*\${0}*'