【问题标题】:GWT GXT StoreFilterField eventGWT GXT StoreFilterField 事件
【发布时间】:2013-02-08 19:47:50
【问题描述】:

仅当用户至少键入 3 个字符时,我才想搜索我的树。 我如何捕捉“doSelect”事件来做到这一点? 如果我在文本字段上添加一个 keylistener 来检查它的值,则在 doSelect 之后调用处理程序。 谁能帮帮我?

这是一个例子……

    filterText = new StoreFilterField<ModelData>() {

        @Override
        protected boolean doSelect(Store<ModelData> store,
                ModelData parent, ModelData record, String property,
                String filter) {

                String name = record.get("name");
                name = name.toLowerCase();
                if (name.startsWith(filter.toLowerCase())) 
                    return true;
                else
                    return false;
        }

    };

    KeyListener keyListener = new KeyListener() {
        public void componentKeyUp(ComponentEvent event) {
            loadingImage.setVisible(false);
            if(filterText.isValid() && filterText.getRawValue().length()>=FILTER_MIN_SIZE) {
                filterText.bind(store);
            } else {
                filterText.unbind(store);
            }

        }

    }; 
    filterText.setMinLength(FILTER_MIN_SIZE);
    filterText.bind(store);

【问题讨论】:

    标签: java gwt filter tree gxt


    【解决方案1】:

    (似乎是 GXT 2,如果您实际使用的是 GXT 3,请告诉我)

    StoreFilterField 依赖于applyFilters 方法来实际应用所有这些。它已经检查了文本是否至少有一个字符:

    protected void applyFilters(Store<M> store) {
      if (getRawValue().length() > 0) {
        store.addFilter(filter);
        store.applyFilters(property);
      } else {
        store.removeFilter(filter);
      }
    }
    

    我看到的最简单的覆盖它的方法是继承 StoreFilterField 并重新定义这个方法:

    filterText = new StoreFilterField<ModelData>() {
      @Override
      protected void applyFilters(Store<M> store) {
        if (getRawValue().length() > 3) {
          store.addFilter(filter);
          store.applyFilters(getProperty());
        } else {
          store.removeFilter(filter);
        }
      }
    }
    

    【讨论】:

    • 谢谢。太棒了!还有一种拦截搜索结束的方法吗?这是一个很大的 ModelData,我想显示一个进度条...
    • 嗨,也许你可以帮我解决这个问题...stackoverflow.com/q/15006376/2055624
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多