我有一个nattable组件,具有以下层:
视口图层
选择层
躲猫猫
columngroupexpandcollapselayer列组
柱状隐层
数据层
当复选框选择更改时,我需要显示/隐藏特定列。为此,我使用了nattable组件提供的#docommand()方法:
if(selection) {
nattable.doCommand(new ColumnShowCommand(nattable, COLUMN_INDEX));
} else {
nattable.doCommand(new ColumnHideCommand(nattable, COLUMN_INDEX+1));
}
除了选中表中的所有项并执行columnhidecommand之外,其他一切都正常工作。在这个特定场景中,整个表的内容都消失了(屏幕截图)。如果表中没有选择,或者没有选择所有元素,那么一切都正常。
请让我知道,如果你有任何的想法是怎么回事,或者如果你以前遇到过这种问题。我在nattables方面的经验非常有限,所以如果您需要任何其他信息,请告诉我。谢谢您!
1条答案
按热度按时间wnrlj8wa1#
这是
SelectionLayer
支持基于列选择的多列隐藏操作。一ColumnHideCommand
被消费,而不是MultiColumnHideCommand
基于完全选定的列创建和执行。负责的代码位于SelectionLayer#handleColumnHideCommand(ColumnHideCommand)
. 该方法是受保护的,因此如果您不需要该功能,因为您只支持以编程方式而不支持通过用户执行的ui隐藏/显示列,那么您可以重写该方法以只执行super.doCommand(command);
不检查选择。