2012-11-19 4 views
3

im new в структуре базы компонентов java, особенно vaadin. перед использованием этой рамки, im используя распорки 2.Vaadin: Фильтрация выходного сигнала на столе

поэтому, когда я хочу запросить некоторую таблицу, у меня есть окно поиска, содержит много текстовых полей. когда пользователь нажимает кнопку «Поиск», параметры из texfield будут отправлены в мой спящий режим напрямую, используя http post.

мой вопрос, как фильтровать выход с помощью ваадина?

ответ

3

Просто обновите свой BeanContainer новыми данными. Вот пример моего кода

public void refreshTableData() { 
    getBeanContainer().removeAllItems(); 
    List<Customer> customers = customerDao.getByCustomerFilter(getCustomerFilterForm().getFilterItem().getBean()); 
    getBeanContainer().addAll(customers); 
} 

Где CustomerFilter является боб, который имеет все критерии поиска данных, которые я заполню его в форму ранее (например, выпадающие списки), и beanContainer моя таблица содержит информацию о источник.

+0

спасибо за ваш ответ J-unior. поэтому я должен сначала создать контейнер? –

+2

Рад помочь, я предлагаю вам прочитать [это] (https://vaadin.com/tutorial/-/chapter/databinding.binding.html) –

+0

привет J-unior, еще раз спасибо за вашу помощь. он работает ..: D –

0
filterString = checkBox.getValue().toString(); 
Filterable f = (Filterable)(table.getContainerDataSource()); 
     if(filters==null) 
      filters=new TreeMap<Object, SimpleStringFilter>(); 
     SimpleStringFilter filter=filters.remove(propertyId); 
      if (filter != null){ 
       f.removeContainerFilter(filter); 
      } 
      filter = new SimpleStringFilter(propertyId, filterString, ignoreCase, onlyMatchPrefix); 
     filters.put(propertyId, filter); 
     f.addContainerFilter(filter); 
+0

Вы должны объяснить, что делает ваш код в интересах искателя. –

0

Это мое решение для фильтрации строк, используя текст, который пользователь вводит с помощью текстовое поле:

textField.addTextChangeListener(new TextChangeListener() { 

      @Override 
      public void textChange(TextChangeEvent event) { 
       Filterable filter= (Filterable) (table.getContainerDataSource()); 
       filter.removeAllContainerFilters(); 

       String filterString = event.getText(); 
       if (filterString.length() > 0) { 
        filter.addContainerFilter(new Like("columnName", "%"+filterString +"%")); 
       } 

      } 
     }); 

Я надеюсь, что код selfexplanatory.

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