2010-01-19 10 views
11

dijit.form.FilteringSelect está cerca de lo que necesito. He intentado muchas maneras de hacer lo que quiero, pero siendo un principiante nunca sé si voy en la dirección correcta.dijit.form.FilteringSelect con búsqueda de subcadena

Cuando comienzo a escribir en un FilteringSelect, solo veo las opciones que comienzan con lo que escribí. Como una consulta en value + "*"
Lo que necesito es ver cualquier opción que tenga lo que escribo en cualquier lugar. Como una consulta en "*" + value + "*"

Entonces, si hay "Apple", "Banana" y "Naranja", y escribo "e", debería ver "Apple" y "Naranja". Si es posible, con la cadena de búsqueda enfatizó: "Appl e", "Orang e"

Creo que necesito un poco de almacenamiento de datos inteligente, pero en cualquier lugar que vaya se parece a un callejón sin salida. ¿Me estoy perdiendo algo, o debería hacer esto de una manera completamente diferente?

Respuesta

15

que desea utilizar el atributo queryExpr:

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

Aviso del * antes y después de los $ {0}.

+1

Tenga en cuenta que si establece 'queryExpr' en un valor diferente al predeterminado (inicio del término de búsqueda) también puede configurar' searchDelay: 1000' (1 seg o menos) b/c cada vez que busque, sobrescribe lo el usuario tipeó w/the top term. –

+2

Alternativa a la demora, puede establecer 'autocompletar' en falso. https://bugs.dojotoolkit.org/ticket/13915 –

0

En nuestro proyecto hemos resuelto este problema con un parche al dojo.data.util.filter sobreescribiendo el método patternToRegExp.

4

¡Hola! Necesita agregar queryExpr = "$ {0}" al componente filterselect.

De forma predeterminada, es $ {0} *, lo que significa que busca cadenas que comiencen con lo que escribió.

Como una pista para otros, en JSP, tuve que cambiar la consulta expr. para consultarExpr = "\ $ {0}".

+0

los documentos también sugieren que debe usar 'highlightMatch =" all "' junto con esto (pero parece que no funciona bien para mí a partir de dojo1.3) –

+1

+1 para la pista de JSP. –

0

Después de mucho tiempo tratando de hacerlo funcionar, el consejo de Mada fue correcto pero omitió el * antes y el después. El queryStr correcto (en JSP) es '*\${0}*'