2013-02-08 5 views
0

Я хотел бы поискать в своем дереве только в том случае, если пользователь типа 3 символа не менее. Как я могу поймать событие «doSelect», чтобы сделать это? Если я добавлю ключевое слово в текстовое поле, чтобы проверить его значение, обработчик вызывается после doSelect. Может ли кто-нибудь мне помочь?GWT GXT StoreFilterField event

Это пример ...

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

ответ

0

(Появляется быть 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); 
    } 
    } 
} 
+0

Спасибо. Это потрясающе! Существует также метод перехвата конца поиска? Это большой ModelData, и я бы хотел отобразить индикатор выполнения ... –

+0

Привет, может быть, вы можете мне помочь с этим вопросом ... http://stackoverflow.com/q/15006376/2055624 –

Смежные вопросы