0

背景:
假设我在一个视图中有单个表的多个片段,每个片段都有一个 rowExpander。

预期行为:
如果我在一个表片段中展开一行,其他片段相同的索引行应该被展开。崩溃也一样

我的进度:
示例片段:

tableview(dataset) {
                column("First Name", Person::firstNameProperty)
                column("Last Name", Person::lastNameProperty)
                rowExpander(true) {
                    selectedData.item?.apply {
                        fire(ExpandDataEvent(dataset.indexOf(this)))
                    }
                    column("Mobile Nos.", Person::mobileNumProperty)
                    column("Email Ids", Person::emailIdProperty)
                }
                bindSelected(selectedData)
                subscribe<ExpandDataEvent> { event ->
                    selectionModel.select(event.index)
                }
            }

活动类别:

class ExpandDataEvent(val index: Int) : FXEvent()

我从“订阅”中了解到的是,它在触发事件时被调用(目前,每当用户通过双击/单击加号扩展行时,我都会触发该事件);并且由于订阅放置在 tableview 中,因此会为所有存在的表片段调用它(这就是我想要的)。但是在 subscribe 方法中,我正在做一个 selectionModel.select(event.index) ,它只选择相应的索引行。我想扩展行(最好使用 selectionModel)

问题2:
是否可以删除加号列?对于rowExpand,如果我将expandOnDoubleClick 设置为true,我不想在我的tableview 中添加加号列。

4

1 回答 1

2

构建器rowExpander返回实际值ExpanderColumn,这基本上是正常的TableColumn。保存对扩展器的引用,以便您以后可以对其进行操作:

val expander = rowExpander(true) { ... }

在正下方,您现在可以隐藏扩展列:

expander.isVisible = false

现在也很容易从事件订阅者切换特定行的展开状态:

subscribe<ExpandDataEvent> { event ->
    expander.toggleExpanded(event.index)
    selectionModel.select(event.index)
}

您可能需要仔细检查您是否没有为触发事件的 tableview 切换扩展器,因此请考虑在您的事件中包含事件源并在订阅者中区分它。

我将调查我们是否可以向 rowExpander 构建器函数添加一个可见的布尔参数,这样您就不需要isVisible手动调用:)

于 2016-12-26T10:15:42.697 回答