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

vaadin网格排序bigDecimal列

澹台逸明
2023-03-14

我已经将BigDecimal属性的列添加到网格中,并希望对此类列进行排序可以开箱即用:

java prettyprint-override">grid.addColumn(new NumberRenderer<>(dto -> dto.getTotalPrice(), NumberFormat.getCurrencyInstance()))
    .setAutoWidth(true)
    .setFlexGrow(0)
    .setHeader("Summe")
    .setSortProperty("totalPrice") 
    .setSortable(true);
.setComparator((val1, val2) -> val1.getTotalPrice().compareTo(val2.getTotalPrice()))

添加:如果不使用NumberRenderer并以正常方式添加列,那么setSortedProperty将按预期工作:

grid.addColumn(OrderListDto::getTotalPrice, "totalPrice")
    .setSortProperty("totalPrice")

共有1个答案

章兴发
2023-03-14

如果不定义呈现器,则为该列定义的值提供程序也将用于比较内存中的值(如果为该列启用了排序)。当使用呈现器时,列不能直接访问授予呈现器的值提供程序,因此需要手动定义它。

传递给SetSortProperty的值仅供后端数据提供程序使用,而不适用于内存中的数据。它可能仍然会给人留下工作的印象,因为setsortproperty还会触发setsortable(true),当没有基于值提供程序使用呈现器时,它将工作。传递给setsortproperty的值对内存中的数据没有任何影响,因此可以执行setsortproperty(foo“),结果将是相同的。

 类似资料:
  • 我使用带有嵌套属性的Vaadin网格,例如。我想用对这些列进行排序,因为是一个LocalDateTime,它总是。但这行不通。我需要为每个这样的列定义一个,我已经使用了很多:-) 这是一个bug还是故意的? 亲切地问候 张秀坤

  • 问题内容: Vaadin 7中的和组件有什么区别? 我应该使用哪个,什么时候使用? 问题答案: Grid是一个功能更强大的新组件,它应该是Table的后继组件(请参阅Table已死,Grid长寿)。因此,应该没有任何必要偏爱表格而不是网格。 这是Vaadin从表格迁移到网格的一系列文章的第一篇:https : //vaadin.com/blog/-/blogs/mission-rip- table

  • 下面的代码运行在myGridExample是一个Vaadin8网格对象的地方。 setMaximumWidth(170)似乎没有执行任何操作。但是。SetMinimumWidth(130)按预期工作。这是虫子吗?

  • 我正在考虑这个问题的解决方案,但我不知道如何去做: 我的实体< code>StudentBook具有以下属性: 来自数据库的数据,它们看起来像: 字母字符可以用数值表示为 现在我想这样做: 将是学生的姓名 第一列将自动生成选定月份的天数(日期) “行”将具有点来自表-每个对应的日期 最后一行将类似于“总和行”,显示中每个学生的。 所以我创建了网格 方法返回 将学生的名字添加到各个< code >列

  • 我正在使用瓦丁的表进行数据表示。为此,我试图弄清楚以下两个问题: 1.)如何禁用各列表头的排序功能 2.) 如何设置表中一列的颜色