【问题标题】:Vaadin TwinColSelect filter only one columnVaadin TwinColSelect 仅过滤一列
【发布时间】:2016-10-04 09:19:59
【问题描述】:

我有一个 TwinColSelect 和一个 Textfield 用于过滤表格的内容,效果很好,但问题是过滤器过滤了 TwinColSelect 的两个列的内容,我想知道它是否有可能它只影响到左列。

我现在的代码如下所示:

    final TwinColSelect select = new TwinColSelect();
    select.setItemCaptionPropertyId(PersistenceLoinc.CORPUS_NOMBRE);

    TextField filtro = new TextField();

    filtro.addTextChangeListener(new TextChangeListener() {


        private static final long serialVersionUID = 1L;
        SimpleStringFilter filter = null;

        @Override
        public void textChange(TextChangeEvent event) {
            Filterable f = (Filterable) select.getContainerDataSource();

            if (filter != null) {
                f.removeContainerFilter(filter);
            }
            filter = new SimpleStringFilter(select.getItemCaptionPropertyId(), event.getText(), true, false);
            f.addContainerFilter(filter);
        }
    });

谢谢, 克里斯。

【问题讨论】:

  • 唯一的方法是构建一个过滤器,它不会过滤已分配列表中的项目
  • @AndréSchild 嗯,好主意,伙计,好主意,确实!谢谢!

标签: java vaadin vaadin7


【解决方案1】:

我在问题的 cmets 部分遵循了@andreSchild 的建议,并开发了以下完美运行的类:

public class TwinColSelectStringFilter implements Container.Filter {

final SimpleStringFilter spf;
final TwinColSelect select;
final Object propertyId;

public TwinColSelectStringFilter(Object propertyId, String filterString, boolean ignoreCase, boolean onlyMatchPrefix, TwinColSelect select) {
    spf = new SimpleStringFilter(propertyId, filterString, ignoreCase, onlyMatchPrefix);
    this.select = select;
    this.propertyId=propertyId;
}

@Override
public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException {
    if(select.getValue() != null && (select.getValue() instanceof Collection)) {
        if (((Collection<Integer>) select.getValue()).contains(itemId)) {
            return true;
        }
    }
    return spf.passesFilter(itemId, item);
}

@Override
public boolean appliesToProperty(Object propertyId) {
    return spf.appliesToProperty(propertyId);
}

}

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多