【问题标题】:Vaadin filter Date ColumnVaadin 过滤器日期列
【发布时间】:2021-12-04 10:48:01
【问题描述】:

我正在使用 Vaadin 15。在我的应用程序中,我使用了一个网格,它使用一个数据提供者(数据)来显示一堆不同的列。此外,我正在使用过滤器来过滤所有列。一列由日期组成,我当前的过滤功能无法过滤范围。

我对 Java 和一般编程非常陌生。这是我目前使用的过滤功能。

TextField cas=getFilters(casColumn,filter);
cas.addValueChangeListener(event-> data.addFilter(dataRecord-> StringUtils.containsIgnoreCase(dataRecord.getCas(), cas.getValue())));

现在我还希望能够过滤日期范围。因此,在过滤器 TextField 中给出了一个日期,并且将显示直到今天的所有内容,所有比该日期更早的内容都不会显示。

感谢您的帮助。一些关于如何做的文献的提示也很感激。

【问题讨论】:

    标签: java vaadin


    【解决方案1】:

    我正在使用 Vaadin 15。

    只是指出使用 Vaadin 15 毫无意义,因为它不再受支持。最新版本 Vaadin 21。

    如果您使用的是最新的 Vaadin 版本,则使用内存数据提供程序 Grid 设置使用

    GridListDataView<Data> dataView = setITems(data); // where data is a collection of 
    

    项目

    然后你可以通过dataView设置你使用的过滤器,比如说

    textField.addValueChangeListener(event -> {
         dataView.setFilter(item-> item.getProperty().equals(event.getValue));
    });
    

    注意,如果您有来自回调的数据提供者,则上述方法不适用于您,而是按如下方式进行过滤,即提供可以使用过滤器值的查询

        TextField filter = new TextField("Filter");
        filter.setValueChangeMode(ValueChangeMode.LAZY);
        filter.addValueChangeListener(event -> {
            grid.setItems(query -> personService
                    .fetch(query.getOffset(), query.getLimit(), event.getValue()).stream(),query -> personService.count(event.getValue()));
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2015-08-30
      相关资源
      最近更新 更多