2010-01-19 32 views
11

dijit.form.FilteringSelect ihtiyacım olana yakındır. İstediğimi yapmanın birçok yolunu denedim, ama dijit acemi olmak, doğru yöne gidip gitmediğimi asla bilmem.dijit.form.FilteringAltyapı dizini ile arama

Bir FilteringSelect'te yazmaya başladığımda, yalnızca yazdıklarımdan başlayarak seçenekleri görüyorum. value + "*"
üzerinde bir sorgu gibi ihtiyacım olan her yere yazdığımları seçen herhangi bir seçeneği görmek. "*" + value + "*"

ile ilgili bir sorgu gibi, "Apple", "Banana" ve "Orange" varsa ve ben "e" yazarsam, "Apple" ve "Orange" ı görmeliyim. Mümkünse arama dizesi vurguladı ile: "İçi e", "Orang e"

ben bazı akıllı veri depolama alanına ihtiyaç düşünüyorum, ama her yerde ben çıkmaz sokak gibi görünüyor gidin. Bir şeyi mi özlüyorum yoksa bunu tamamen farklı bir şekilde mi yapmalıyım?

cevap

15

Sen queryExpr özellik kullanmak istiyorum:

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

Bildirimi * öncesi ve $ sonra {0}.

+1

'queryExpr' öğesini varsayılandan başka bir değere (arama teriminin başlangıcına) ayarlarsanız, her aramada 'searchDelay: 1000' (1 sn ya da öyleyse) b/c 'yi de ayarlamak isteyebilirsiniz. Kullanıcı en üstte yazmıştır. –

+2

Gecikme alternatif olarak 'autoComplete 'öğesini false olarak ayarlayabilirsiniz. https://bugs.dojotoolkit.org/ticket/13915 –

0

Projemizde bu sorunu patternToRegExp yönteminin üzerine yazarak dojo.data.util.filter düzeltme eki ile çözdük.

4

Hey! Filteringselect bileşenine queryExpr = "$ {0}" eklemeniz gerekir.

Varsayılan olarak, $ {0} *, yani yazdıklarınızla başlayan dizeleri arar.

JSP'de başkaları için bir ipucu olarak, sorgu uzantısını değiştirmek zorunda kaldım. sorguya == "\ $ {0}".

+0

ise dokümanlar, bununla birlikte 'highlightMatch = "all" 'kullanmanız gerektiğini de önerir (ancak dojo1.3'ten itibaren benim için oldukça doğru görünmüyor). JSP ipucu için –

+1

+1. –

0

Çok uzun bir süre sonra onu koşturmaya çalışabilirim, Mada uçağı doğruydu ama * önce ve sonra özlüyor. Doğru queryStr (JSP'de) '*\${0}*'