我有一个ZK网格,我在每行上生成随机数。每行由一个复选框和数字本身组成。
我想要一个按钮,删除带有选中复选框的所有行。这是“删除”按钮的事件处理程序:
deleteButton.addEventListener(Events.ON_CLICK,
new EventListener() {
public void onEvent(Event evt) {
Iterator<Component> selected = randomTable.queryAll("row checkbox").iterator();
System.out.println("Deleted: ");
while (selected.hasNext()) {
Checkbox c = (Checkbox) selected.next();
if (c.isChecked()) {
System.out.print(c.getId());
System.out.println(" from row " + c.getParent().getId());
c.getParent().detach(); // detach the checked row
}
}
}
});
但它只会删除第一个选中的行,即使它找到所有其他已检查的行。
我还是ZK的新手。有什么想法吗?
答案 0 :(得分:0)
我想出了一个解决方法。事实证明,如果我使用中间列表来存储我想要删除的行,detach()
适用于所有这些行。
无论如何,请随意分享任何关于它为什么不起作用的提示。任何贡献都是+1。
这是更新后的代码:
deleteButton.addEventListener(Events.ON_CLICK,
new EventListener() {
public void onEvent(Event evt) {
List<Component> toRemove = new Vector<Component>();
Iterator<Component> selected = randomTable.queryAll("row checkbox").iterator();
System.out.println("Deleted: ");
while (selected.hasNext()) {
Checkbox c = (Checkbox) selected.next();
if (c.isChecked()) {
System.out.print(c.getId());
System.out.println(" from row " + c.getParent().getId());
toRemove.add(c.getParent());
}
}
for (Component c : toRemove)
c.detach();
}
});