繁体   English   中英

自定义过滤的GXT组合框上的下拉窗口未打开

[英]Dropdown window does not open on custom filtered GXT combobox

我想过滤GXT ComboBox商店。 例如,如果我在组合框中键入“ st”,我希望组合框仅显示包含“ st”的值

在此处输入图片说明

这是我的实现

combo = new ComboBox<MerchantDTO>(store, label);
    StoreFilter<MerchantDTO> filter = new StoreFilter<MerchantDTO>() {
        @Override
        public boolean select(Store<MerchantDTO> store, MerchantDTO parent, MerchantDTO item) {
        boolean canView = (item.getName() != null &&    item.getName().toLowerCase().contains(combo.getText().toLowerCase()));
        return canView;
    }
};
store.setEnableFilters(true);
store.addFilter(filter);

此过滤器可以工作并显示正确的值,但是combobox的下拉列表不会自动打开。 我必须手动单击组合框以打开下拉列表,然后查看过滤的结果。 我正在使用GXT 3.1.0和GWT 2.7.0

我尝试使用combo.expand(); 功能,但没有打开下拉列表。

任何帮助,将不胜感激。

我找到了解决方案。 这是如何将自定义过滤器添加到GXT(版本3.1.0)ComboBox的示例

1)创建扩展ListStore的类,并为用户输入文本添加String变量

public abstract class XListStore<M> extends ListStore<M> {

private String userText;

public XListStore(ModelKeyProvider<? super M> keyProvider) {
    super(keyProvider);
}

@Override
protected boolean isFilteredOut(M item) {
    return filter(item);
}

public abstract boolean filter(M item);

public String getUserText() {
    return userText;
}

public void setUserText(String userText) {
    this.userText = userText;
}
}

2)初始化自定义列表存储并实现过滤方法

XListStore<SampleDTO> store = new XListStore<SampleDTO>(new ModelKeyProvider<SampleDTO>() {
        @Override
        public String getKey(SampleDTO item) {
            return item.getId();
        }
    })  {
        public boolean filter(SampleDTO item) {
            boolean result = false;
            //Write you filter logic here
            return result;
        }
    };
store.setEnableFilters(true);

3)初始化ComboBox并添加Key up处理程序

ComboBox<SampleDTO> comboBox = new ComboBox<SampleDTO>(store, label);
    comboBox.addKeyUpHandler(new KeyUpHandler() {
    @Override
    public void onKeyUp(KeyUpEvent event) {
        store.setUserText(comboBox.getText());
    }
});

完成。 现在,ComboBox将根据用户输入过滤存储并自动打开下拉窗口

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM