【问题标题】:vaadin grid column sort for nested properties嵌套属性的 vaadin 网格列排序
【发布时间】:2021-06-18 14:45:43
【问题描述】:

我使用带有嵌套属性的 Vaadin 网格,例如order.createdAt。我想对这些列进行排序并使用.setSortProperty("order.createdAt") 设置排序,因为createdAt是一个LocalDateTime,它始终是Comparable。但这不起作用。我需要为每个这样的列定义一个comparator,我已经使用了很多:-)

grid.addColumn(new LocalDateTimeRenderer<>(dto -> 
  dto.getOrder().getCreatedAt(), DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)))
 .setAutoWidth(true)
 .setFlexGrow(0)
 .setHeader("Order data")
 //.setSortProperty("order.createdAt") <-- doesn't work
 .setComparator((val1, val2) -> val1.getOrder().getCreatedAt().compareTo(val2.getOrder().getCreatedAt()))
            .setSortable(true);

这是一个错误还是故意的?

亲切的问候
多米尼克

【问题讨论】:

    标签: vaadin vaadin-grid vaadin14


    【解决方案1】:

    这是故意的。由于当前定义了该功能,Comparator 用于内存中排序,sortProperty 在使用后端 DataProvider 时适用。

    但是,您可以使用带有ValueProvidersetComparator 变体使代码略短:setComparator(dto -&gt; dto.getOrder().getCreatedAt())。此外,通过setComparator将列标记为可排序,因此不需要单独执行setSortable(true)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多