我有一个ZK网格,其中我在每一行上生成随机数。每一行都由一个复选框和数字本身组成。
我想有一个按钮,删除所有的行与复选框选中。下面是“delete”按钮的事件处理程序:
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的新手。有什么想法吗?
发布于 2013-02-08 16:27:04
我想出了一个解决办法。事实证明,如果我使用一个中间列表来存储我想要删除的行,那么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();
}
});
https://stackoverflow.com/questions/14775151
复制