【问题标题】:Issue on hiding multiple columns with NatTable使用 NatTable 隐藏多列的问题
【发布时间】:2019-02-19 04:28:28
【问题描述】:

我需要以编程方式隐藏 NatTable 的多个列。 为此,我用一个方法计算一个索引数组,然后我 如下调用 MultiHideCommand。

int[] indexArray = idxToHide.stream().mapToInt(i -> i).toArray();
_tableView.doCommand(new MultiColumnHideCommand(_tableView,indexArray));

我得到的是只有一堆列被隐藏,而不是 indexArray 中的所有列。

我了解到 ColumnHideShowLayer 的设计考虑了 UI 交互。

是否有以编程方式删除多列的正确方法?

【问题讨论】:

    标签: eclipse-plugin nattable


    【解决方案1】:

    首先,该命令将位置作为参数,而不是索引。其次,位置需要基于用作第一个参数的层。如果涉及 ViewportLayer,则不考虑不可见的列。

    所以你可以尝试根据一些较低的层来计算位置,例如SelectionLayer,然后传入 SelectionLayer 和命令上基于 SelectionLayer 的位置。这在理论上应该可行。

    【讨论】:

    • 谢谢 Dirk,我能够使用您的建议隐藏列。现在我正在尝试使用 SelectCellCommand 同时使用视口层和选择层来选择特定的单元格,但是在这两种情况下,我都无法在缩小的列上选择正确的单元格。如果有一些隐藏的列,视口层能否理解要选择的确切单元格?
    • 如前所述,您需要传递位置而不是索引,并且需要传递与 SelectionLayer 相关的位置。 ViewportLayer 只处理可见区域的位置。所以_tableView.doCommand(new SelectCellCommand(selectionLayer, col, row)); 应该可以工作。
    • 是的,我知道我需要这个职位。我认为我在右键单击时获取列位置的方式有问题(我需要根据右键单击来了解应用程序功能的列位置)。要在右键单击时获得列位置,我使用MenuItemProviders.getEventData(event).getColumnPosition()。我将该位置传递给 SelectCellCommand,并将 selectionLayer 作为第一个参数。
    • 这是不正确的。您以这种方式获得的位置基于 NatTable,而不是 SelectionLayer。这种方式使用时,需要使用 NatTable 作为命令的第一个参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    相关资源
    最近更新 更多