2010-01-19 3 views
11

dijit.form.FilteringSelect est proche de ce dont j'ai besoin. J'ai essayé beaucoup de façons de faire ce que je veux, mais étant un débutant dijit je ne sais jamais si je vais même dans la bonne direction. Lorsque je commence à taper un FilteringSelect, je ne vois que les options commençant par ce que j'ai tapé. Comme une question sur value + "*"
Ce dont j'ai besoin est de voir n'importe quelle option qui a ce que je tape n'importe où. Comme une requête sur "*" + value + "*"dijit.form.FilteringSelect avec recherche par sous-chaîne

Donc s'il y a "Apple", "Banane" et "Orange", et je tape "e", je devrais voir "Apple" et "Orange". Si possible, avec la chaîne de recherche a souligné: « Appl e », « orang e »

Je pense que j'ai besoin de stockage de données intelligent, mais partout où je vais ressemble à une impasse. Ai-je manqué quelque chose, ou devrais-je le faire d'une manière complètement différente?

Répondre

15

Vous voulez utiliser l'attribut queryExpr:

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

Notez que le * avant et après les $ {0}.

+1

Notez que si vous définissez 'queryExpr' à autre chose que la valeur par défaut (début du terme de recherche), vous pouvez également définir' searchDelay: 1000' (1 sec environ) b/c chaque fois qu'il cherche, il écrase quoi l'utilisateur a tapé w/le terme supérieur. –

+2

Alternative au délai, vous pouvez définir 'autoComplete' sur false. https://bugs.dojotoolkit.org/ticket/13915 –

0

Dans notre projet, nous avons résolu ce problème avec un correctif à dojo.data.util.filter en écrasant la méthode patternToRegExp.

4

Hey! Vous devez ajouter queryExpr = "$ {0}" au composant filteringselect.

Par défaut, c'est $ {0} *, ce qui signifie qu'il recherche les chaînes qui commencent par ce que vous avez tapé.

Comme un indice pour les autres, dans JSP, j'ai dû modifier la requête expr. à queryExpr = "\ $ {0}".

+0

les docs suggèrent également que vous devriez utiliser 'highlightMatch =" all "' conjointement avec cela (mais cela ne semble pas fonctionner correctement pour moi depuis dojo1.3) –

+1

+1 pour l'indicateur JSP. –

0

Après avoir passé beaucoup de temps à essayer je pouvais le faire fonctionner, le conseil de Mada était correct mais il manquait le * avant et après. Les correctes queryStr (en JSP) sont '*\${0}*'