背景:
假设我有 multiple fragments of a single table in a view ,每个都有一个rowExpander .
预期行为:
If in one table fragment I expand a row, other fragments same indexed row should get expanded. 同样崩溃
我的进步:
样本片段:
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()
我从“subscribe”中理解的是,它在事件被触发时被调用(目前,只要用户通过双击/单击加号展开行,我就会触发事件);由于订阅放在tableview中,因此会调用所有存在的表碎片(这就是我想要的) . 但是在subscribe方法中,我正在做一个selectionModel.select(event.index),它只选择相应的索引行 . 我想扩展行(最好使用selectionModel)
问题2:
是否可以删除加号列?对于rowExpand,如果我将expandOnDoubleClick设置为true,我不希望在tableview中使用加号列 .
1 回答
rowExpander
构建器返回实际的ExpanderColumn
,这基本上是正常的TableColumn
. 保存对扩展器的引用,以便以后可以对其进行操作:在下面,您现在可以隐藏扩展器列:
现在,也很容易从事件订阅者切换特定行的展开状态:
您可能需要仔细检查是否不为触发事件的tableview切换扩展器,因此请考虑在事件中包含事件源并区分订阅者中的事件源 .
我将研究是否可以向rowExpander构建器函数添加可见的布尔参数,因此您不需要手动调用
isVisible
:)