【发布时间】:2014-03-20 10:52:40
【问题描述】:
我有一个显示一些数据的单元格表。对于每一行,我想要两列包含编辑/删除按钮。单击每个按钮时,它应该能够通知侦听器单击了哪个按钮(并且最好还能够传入与该行关联的对象)。
我该怎么做?具体来说,我知道如何渲染一个按钮,但是如何处理点击事件并传入用户点击编辑或删除的对象?
【问题讨论】:
我有一个显示一些数据的单元格表。对于每一行,我想要两列包含编辑/删除按钮。单击每个按钮时,它应该能够通知侦听器单击了哪个按钮(并且最好还能够传入与该行关联的对象)。
我该怎么做?具体来说,我知道如何渲染一个按钮,但是如何处理点击事件并传入用户点击编辑或删除的对象?
【问题讨论】:
这是标准方法:
myTable.addCellPreviewHandler(new Handler<MyObject>() {
@Override
public void onCellPreview(CellPreviewEvent<MyObject> event) {
if ("click".equals(event.getNativeEvent().getType())) {
if (event.getColumn() == 0 || event.getColumn() == 1) {
MyObject object = event.getValue();
Window.alert("Column clicked: " + event.getColumn());
}
}
}
});
这是一种更有效的解决方案,因为您只有一个处理程序附加到一个表,而不是尝试将一个处理程序附加到每一行中的每个按钮。
【讨论】:
我认为您可以通过 celltable 中的所有行进行 foreach(我从未使用过 celltables)
然后您可以将自己的 ClickHandler 添加到 Button。
类似的东西(未测试):
final int row = myrow; // add the row value or a object identifier or similar
Button delete_button = new Button("delete");
delete_button.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
// Insert your delete funciton
delete(row);
}
});
你提到了一个 Listener,Listener 被贬低了,改用 Handler。
【讨论】: