【问题标题】:Vaadin 8.1.7 Grid with ComponentRenderer带有 ComponentRenderer 的 Vaadin 8.1.7 网格
【发布时间】:2017-12-11 10:54:04
【问题描述】:

首先对不起我糟糕的英语。 我有一个处于惰性模式的网格(使用数据提供程序),它有一个包含 CheckBox 的列,有时是可见的,有时不是,取决于数据。 当它显示复选框列时显示正常,但在对另一列进行排序后,复选框显示混合。

它不应该出现在对其他列进行排序后显示。数据正确。这是我的代码:

Grid.Column col = getGrid().addColumn(( EventStorage source ) -> {
    if ( source.getModel().hasDelegate()) {
        source.setVisibleCheckBox(Boolean.FALSE);
        source.setCheckBoxEnable(Boolean.FALSE);
    } else {
        source.setVisibleCheckBox(Boolean.TRUE);
        source.setCheckBoxEnable(Boolean.TRUE);
    }
    return source.getCheckBox();
}, new ComponentRenderer());

请给我建议。

【问题讨论】:

  • 混合复选框是什么意思,例如,您有 2 列 AB 分别有行A1 - B1A2 - B2A3 - B3 和排序后不匹配?喜欢:A2 - B3

标签: java vaadin8


【解决方案1】:

也许你应该使用addComponentColumn()?所以不是addColumn(..) & ComponentRenderer。喜欢

Grid.Column col = getGrid().addComponentColumn(( EventStorage source ) -> {
   if ( source.getModel().hasDelegate()) {
      source.setVisibleCheckBox(Boolean.FALSE);
      source.setCheckBoxEnable(Boolean.FALSE);
   } else {
      source.setVisibleCheckBox(Boolean.TRUE);
      source.setCheckBoxEnable(Boolean.TRUE);
   }
   return source.getCheckBox();
});

【讨论】:

  • IMO 复选框应在 lambda 中创建。如果你不这样做,那么你会事先为每个数据行创建一个复选框组件,这会浪费资源:)
  • Vaadin 团队认识到了这个问题。这是一个框架问题。
  • @Zaosz 好的,你有描述这个问题的链接吗?
  • @Zaosz 是否有可能有一些图像/更详细的问题描述? 1.我什至不能用addColumn(..)编译它,只有addComponentColumn()和没有ComponentRenderer。 2. 我看不出排序有什么问题?所以图片会有很大帮助。
猜你喜欢
  • 1970-01-01
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 2020-02-19
  • 2020-09-15
  • 1970-01-01
相关资源
最近更新 更多