columnhidecommand使表列在nattable中消失

rn0zuynd  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(292)

我有一个nattable组件,具有以下层:
视口图层
选择层
躲猫猫
columngroupexpandcollapselayer列组
柱状隐层
数据层
当复选框选择更改时,我需要显示/隐藏特定列。为此,我使用了nattable组件提供的#docommand()方法:

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

除了选中表中的所有项并执行columnhidecommand之外,其他一切都正常工作。在这个特定场景中,整个表的内容都消失了(屏幕截图)。如果表中没有选择,或者没有选择所有元素,那么一切都正常。
请让我知道,如果你有任何的想法是怎么回事,或者如果你以前遇到过这种问题。我在nattables方面的经验非常有限,所以如果您需要任何其他信息,请告诉我。谢谢您!

wnrlj8wa

wnrlj8wa1#

这是 SelectionLayer 支持基于列选择的多列隐藏操作。一 ColumnHideCommand 被消费,而不是 MultiColumnHideCommand 基于完全选定的列创建和执行。负责的代码位于 SelectionLayer#handleColumnHideCommand(ColumnHideCommand) . 该方法是受保护的,因此如果您不需要该功能,因为您只支持以编程方式而不支持通过用户执行的ui隐藏/显示列,那么您可以重写该方法以只执行 super.doCommand(command); 不检查选择。

相关问题