【问题标题】:RowSelectionModel shows all Column Header cellsRowSelectionModel 显示所有列标题单元格
【发布时间】:2015-01-09 00:15:57
【问题描述】:

我创建了一个带有 RowSelectionModel 和 RowSelectionProvider 的 NatTable:

  dataProvider = new ListDataProvider<>(rowData, columnAccessor);
  bodyDataLayer = new DataLayer(dataProvider);
  glazedListEventsLayer = new GlazedListsEventLayer<>(bodyDataLayer, rowData);
  columnReorderLayer = new ColumnReorderLayer(glazedListEventsLayer);
  columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
  selectionLayer = new SelectionLayer(columnHideShowLayer);
  ViewportLayer viewportLayer = new ViewportLayer(selectionLayer);

  selectionProvider = new RowSelectionProvider<>(selectionLayer, dataProvider, true);
  selectionLayer.setSelectionModel(new RowSelectionModel<>(selectionLayer, dataProvider, idAccessor, false));

基本上,桌子做我想做的事。只有一个例外:

表格如下所示:

正如预期的那样,表格显示选中的行 (1)。它还突出显示了实际选择的单元格 (2),这非常好。但是,它将整个表格列标题呈现为选中状态 (3)。我不想要那个。我希望根本不突出显示标题单元格,或者(甚至更好:)我只想突出显示光标单元格 (2) 的列标题单元格。

我认为可能有一个配置标签附加到列标题单元格导致突出显示(所以我可以更改这种标签的样式以摆脱突出显示),但 COLUMN_HEADER 是唯一的配置标签,调试的时候可以看到。

所以,我现在有点卡住了。是什么导致标题单元格突出显示以及如何更改此行为?是否可以仅突出显示光标单元格的标题(与所选行的光标单元格 (2) 一样)?

【问题讨论】:

    标签: eclipse nebula nattable


    【解决方案1】:

    这不是您需要检查的标签,选择它是 DisplayMode。因此,如果您选择了一行,您需要为 DisplayMode.SELECT 注册与为 DisplayMode.NORMAL 注册相同的样式配置。

    如果您只想突出显示列标题中的选择锚点,则需要将自定义 IConfigLabelAccumulator 注册到连接到 SelectionLayer 的列标题的 DataLayer 并添加自定义标签以防列标题中的单元格与选择锚在同一列中。

    对于仅突出选择锚点,NatTable 本身没有默认值。虽然它应该很容易添加。随意为此创建增强票,甚至做出贡献。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      相关资源
      最近更新 更多