dijit.form.FilteringSelect with substring search

时间:2010-01-19 14:45:32

标签: dojo

dijit.form.FilteringSelect接近我的需要。我已经尝试了很多方法来做我想做的事,但作为一个dijit初学者,我从来不知道我是否正朝着正确的方向前进。

当我开始输入FilteringSelect时,我只看到以我键入的内容开头的选项。就像value + "*"上的查询一样 我需要的是看到任何我在任何地方打字的选项。就像对"*" + value + "*"

的查询一样

所以如果有“Apple”,“Banana”和“Orange”,我输入“e”,我应该看到“Apple”和“Orange”。如果可能,强调搜索字符串:“Appl e ”,“Orang e

我认为我需要一些聪明的数据存储,但我去的任何地方看起来都像死路一条。我错过了什么,或者我应该以完全不同的方式做到这一点?

5 个答案:

答案 0 :(得分:16)

您想使用queryExpr属性:

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

注意$ {0}之前和之后的*。

答案 1 :(得分:4)

喂!您需要将queryExpr =“ $ {0} ”添加到filteringselect组件。

默认情况下,它是$ {0} *,这意味着它会搜索以您键入的内容开头的字符串。

作为其他人的提示,在JSP中,我不得不更改查询expr。 to queryExpr =“ \ $ {0} ”。

答案 2 :(得分:0)

在我们的项目中,我们使用dojo.data.util.filter覆盖patternToRegExp方法的补丁解决了这个问题。

答案 3 :(得分:0)

经过大量的时间尝试,我可以让它运行,马达小费是正确的,但错过*之前和之后。正确的queryStr(在JSP中)是'*\${0}*'

答案 4 :(得分:-1)

${}之前添加反斜杠以解决未捕获的错误:dijit._WidgetsInTemplateMixin template 0 in html