ColumnHideCommand使得表列NatTable,消失的时候选择了所有表元素

问题描述 投票:1回答:1

我有下列层的NatTable组分:

  • ViewportLayer
  • SelectionLayer
  • RowHideShowLayer
  • ColumnGroupExpandCollapseLayer
  • ColumnHideShowLayer
  • 数据层

我需要显示/隐藏特定列,当一个复选框选择更改。为了这一点,我使用由NatTable组件提供的#doCommand()方法:

if(selection) {
   nattable.doCommand(new ColumnShowCommand(nattable, COLUMN_INDEX));
} else {
   nattable.doCommand(new ColumnHideCommand(nattable, COLUMN_INDEX+1));
}

一切都运行得很好,当选择表中的所有项目以外的情况下,并执行ColumnHideCommand。在这种特定情况下,整个表的内容消失(Screenshot)。如果表中没有选择,或者不是所有的元素都被选中,然后一切工作就好了。

请让我知道,如果你有任何想法发生了什么事情在那里,或者如果你经历过这样的问题。我与NatTables经验是相当有限的,所以请让我知道如果你需要任何额外的信息。谢谢!

java swt nattable
1个回答
1
投票

这是SelectionLayer的功能来支持基于列选择多列隐藏操作。一个ColumnHideCommand被消耗,而是一个MultiColumnHideCommand创建和基于全所选列执行。负责该代码位于SelectionLayer#handleColumnHideCommand(ColumnHideCommand)。该方法是受保护的,所以如果你不需要这个功能,因为你只支持列隐藏/显示编程方式而不是通过用户执行的UI,可以覆盖不检查选择简单地执行super.doCommand(command);的方法。

© www.soinside.com 2019 - 2024. All rights reserved.