GXT 组合框可从单词中任意位置的关键字形式进行搜索

问题描述 投票:0回答:2

我正在使用 GXT ComboxBox 从商店搜索结果。 但默认情况下它会搜索从输入的关键字开始的单词, 我想要的是从商店中找到在该单词中任意位置具有输入关键字的单词。

因此,如果我输入“M”,它只会给我“数学”,但我也想看到“sam”或“lamp”

知道如何在这里实现这一点。

谢谢

gwt gxt
2个回答
1
投票

从 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;
});

希望有帮助。


0
投票

在旧的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;
            }
        }
    }
}                                                                    
}

代码可能会根据要求进行更改。希望这会有所帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.