我正在使用 GXT ComboxBox 从商店搜索结果。 但默认情况下它会搜索从输入的关键字开始的单词, 我想要的是从商店中找到在该单词中任意位置具有输入关键字的单词。
因此,如果我输入“M”,它只会给我“数学”,但我也想看到“sam”或“lamp”
知道如何在这里实现这一点。
谢谢
从 GXT v4.0.3 开始,您可以使用
QueryMatcher
界面:
myComboBox.setQueryMatcher((item, query) -> {
String value = getPropertyEditor().render(item);
if (value != null) {
return value.toLowerCase()
.contains(query.toLowerCase());
}
return false;
});
希望有帮助。
在旧的GWT版本中,它检查startsWith而不是Contains。您可以创建一个新类并扩展 Store 类。重写 isFiltered 方法以使用 contains 代替 startsWith 更改条件。
例如:
class ChildStore<M> extends Store<M> {
protected boolean isFiltered(ModelData record, String property) {
if (filterBeginsWith != null && property != null) {
Object o = record.get(property);
if (o != null) {
if (!o.toString().toLowerCase().contains(filterBeginsWith.toLowerCase())) {
return true;
}
}
}
}
}
代码可能会根据要求进行更改。希望这会有所帮助:)