当前位置: 首页 > 知识库问答 >
问题:

嵌套属性的vaadin网格列排序

高钱青
2023-03-14

我使用带有嵌套属性的Vaadin网格,例如order.createdat。我想用.setsortproperty(“order.createdat”)对这些列进行排序,因为createdat是一个LocalDateTime,它总是可比的。但这行不通。我需要为每个这样的列定义一个比较器,我已经使用了很多:-)

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);

这是一个bug还是故意的?

亲切地问候
张秀坤

共有1个答案

梁丘琛
2023-03-14

是故意的。由于当前定义了该特性,比较器用于内存中的排序,在使用后端DataProvider时应用sortProperty。

但是,可以使用setcomparator变量,该变量接受valueProvider使代码稍微短一些:setcomparator(dto->dto.getOrder().getcreatedat())。此外,通过setcomparator将列标记为可排序,因此不需要单独执行setsortable(true)

 类似资料:
  • 我已经将BigDecimal属性的列添加到网格中,并希望对此类列进行排序可以开箱即用: 添加:如果不使用NumberRenderer并以正常方式添加列,那么setSortedProperty将按预期工作:

  • 我正在尝试按地理距离对具有嵌套地理点映射的索引进行排序。 这是我的简化映射: 这里,每个组织可以有几个地点点。 文档: 这是我的查询(PHP数组): 预期结果 : 我希望按geo_point排序资源(检查每个位置,然后检查某个位置是否靠近给定的纬度/经度)

  • 我有一个使用Spring Boot 1.5.1和Spring Data Rest的数据库服务。我将我的实体存储在MySQL数据库中,并使用Spring的PagingAndSorting Repository通过REST访问它们。我发现这表明支持按嵌套参数排序,但我找不到按嵌套字段排序的方法。 我有以下课程: 例如,当使用该方法时: 并调用 URI http://localhost:8080/peo

  • 考虑: 如果我们序列化Foo(),输出是: 我想要: 最干净的方法是什么?

  • 问题内容: 我想要一个连接到服务器URL的dojo网格,该URL输出以下json:{identifier:“ id” items:[{id:“ 1”,name:“ John”,大学:{name:“ XXX “,地址:” YYY“}}]。 基本上我有一个嵌套的json。我想将大学名称和大学地址表示为网格中的单独列。 我尝试使用dojox.grid.DataGrid对象并创建网格布局,但不知道如何引用

  • 问题内容: swift没有嵌套类吗? 例如,我似乎无法从嵌套类访问主类的属性测试。 问题答案: Swift的嵌套类与Java的嵌套类不同。好吧,它们就像是Java的一种嵌套类,而不是您正在考虑的那种。 在Java中,内部类的实例会自动引用外部类的实例(除非声明了内部类)。如果您有外部类的实例,则只能创建内部类的实例。这就是在Java中您说类似的原因。 在Swift中,内部类的实例独立于外部类的任何