twincolselect使用Vaadin过滤多个条件

时间:2019-01-18 09:00:42

标签: java vaadin

我正在使用twincolselect显示一些行,并使用一个文本框允许用户过滤twincolselect中的行。 它运作良好,但是只对twincolselect的ItemCaptionPropertyId属性进行过滤,而我必须根据其他条件对twincolselect进行过滤。

实际上,在我的twincolselect中,我显示了客户的名称,当我在文本框中键入A时,我只会看到其名称中带有“ A”或“ a”的客户。 我还应该根据他们的客户编号进行过滤。 因此,我做了一个条件,如果文本框以数字开头=>尝试过滤客户编号(屏幕上不显示),并且文本为字符串,则需要过滤客户名称。

第二部分效果不错,但第一部分效果不佳。 有人可以帮忙吗?

请参见下面的代码。

=>我只是想知道如何更改此行以对Customer对象的任何其他属性进行过滤。

SimpleStringFilter filter = new SimpleStringFilter(form.getCustomers()。getItemCaptionPropertyId(),event.getText(),true,false);

//Creation of the twinColSelect

TwinColSelect customer= new TwinColSelect();
    customer.setCaption(translate.message("XX"));
    customer.setRows(10);
    customer.setNullSelectionAllowed(Boolean.TRUE);
    customer.setNewItemsAllowed(Boolean.FALSE);
    customer.setMultiSelect(Boolean.TRUE);
    customer.setImmediate(Boolean.TRUE);
    customer.setLeftColumnCaption(translate.message("xx"));        
    customer.setRightColumnCaption("xx"));        

customer.setWidth(UIConstants.SEARCH_COMPONENT_TABLE_WIDTH_PERCENTAGE, 
Sizeable.UNITS_PERCENTAGE);
    customer.setItemCaptionPropertyId("name");
    customer.setRequired(Boolean.TRUE);
    customer.setRequiredError(translate.message("xx"));


//The filter which works

Set<Customer> customers= (Set<Customer>) 
form.getCustomerselect().getValue();
                BeanItemContainer<Customer> beans =  new 
BeanItemContainer<Customer>(Customer.class, customers);


                form.getCustomerselect().setContainerDataSource(new B 
eanItemContainer<Customer>(Customer.class, form.getAllCustomer()));
               // f = (Filterable) 
form.getCustomerselect().getContainerDataSource();



                f = (Filterable) 
form.getCustomers().getContainerDataSource();

                SimpleStringFilter    filter = new 
SimpleStringFilter(form.getCustomers().getItemCaptionPropertyId(), 
event.getText(), true, false);



                f.addContainerFilter(filter);
                form.getCustomersSelect().setValue(customers);

                form.getCustomersSelect().setEnabled(Boolean.TRUE);
                form.getCustomersSelect().setImmediate(Boolean.TRUE);

0 个答案:

没有答案