我正在尝试将 AbstractToolBar 添加到 DefaultDataTable。工具栏有一个单击按钮,应删除所选行。我的表有一个复选框列,用于选择行。
AbstractToolBar 实现看起来像这样 -
public class GridToolBar extends AbstractToolbar {
/**
*
*/
private static final long serialVersionUID = -2126515338632353253L;
Button btnDelete;
List<Contact> selected;
public GridToolBar(final DataTable<?> table) {
super(table);
// TODO Auto-generated constructor stub
btnDelete = new Button("delete",new Model("Delete"));
btnDelete.setOutputMarkupId(true);
btnDelete.add(new AjaxEventBehavior("onclick") {
private static final long serialVersionUID = 6720512493017210281L;
@Override
protected void onEvent(AjaxRequestTarget target) {
System.out.println(selected);
((UserProvider)table.getDataProvider()).remove(selected);
target.add(table);
}
});
add(btnDelete);
}
public void setSelected(List inList){
selected = inList;
}
}
工具栏已添加到表中,如下所示 -
GridToolBar tb = new GridToolBar(table);
tb.setOutputMarkupId(true);
table.addTopToolbar(tb);
该代码工作正常,除了单击删除按钮外,它在表格下方添加了一个额外的删除按钮。在使用 firebug 检查时,两个按钮的 id 完全匹配。但是,在对表格进行排序时,额外的按钮会从视图中移除。
有人可以帮助我如何避免在每次点击时创建额外的按钮?为什么首先要创建它?任何帮助表示赞赏。
谢谢,索南