【发布时间】:2012-12-27 05:50:25
【问题描述】:
我正在使用 ZK 6.5.1。
有时一棵树可能包含一些逻辑,比如当用户选择/取消选择一个项目时,这可以通过监听这样的事件来轻松完成。
@Listen("onSelect = #tree")
public void onSelect(SelectEvent<Treeitem, String> event) {
Treeitem ref = event.getReference();
if (ref.isSelected()) {
// do things when item is selected
} else {
// do things when item is deselected
}
}
另一方面,ZK提供了用户可以使用up、down、Page Up、Page Down的功能kbd>、Home、End 在树上到“Move Selection”。此操作还将发送有关新选定项目的选择事件,但不发送取消选定项目的事件。因此,当用户使用这些键时,以前的代码 sn-ps 不起作用。
我的问题是:
- 我应该怎么做才能准确知道用户“移动选择”时取消选择了哪些项目?
- 如果没有,我可以禁用这些键吗?
如果有人想知道,这里有一个 SSCCE 示例。 Or in ZKFiddle
作曲家:
public class TestComposer extends SelectorComposer<Div> {
@Listen("onSelect = #tree")
public void onSelect(SelectEvent<Treeitem, String> event) {
Treeitem ref = event.getReference();
if (ref.isSelected()) {
Clients.log("Selected " + ref.getLabel());
} else {
Clients.log("Deselected " + ref.getLabel());
}
}
}
ZUL:
<div apply="mytest.TestComposer">
<tree id="tree" multiple="true" checkmark="true">
<treechildren>
<treeitem label="A" />
<treeitem label="B" />
<treeitem label="C" />
</treechildren>
</tree>
</div>
【问题讨论】: