3

我是 Java 组件基础框架的新手,尤其是 vaadin。在使用这个框架之前,我使用的是 struts 2。

所以当我想查询一些表时,我有一个搜索框,包含许多文本字段。当用户单击搜索按钮时,来自 texfield 的参数将直接使用 http post 发送到我的休眠状态。

我的问题,如何使用 vaadin 过滤输出?

4

3 回答 3

3

只需使用新数据更新您的 BeanContainer。这是我的代码示例

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

CustomerFilter是一个包含所有搜索条件数据的 bean,我在之前的表单中填充它(例如使用组合框),而 beanContainer 是我的表容器数据源。

于 2012-11-19T08:43:36.987 回答
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);
于 2015-02-11T03:38:42.703 回答
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 +"%"));
                }

            }
        });

我希望代码是不言自明的。

于 2016-01-13T16:31:36.743 回答