我正在尝试将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完全匹配。在对表进行排序时,会从视图中删除额外的按钮。
有人可以帮助我如何避免在每次点击时创建额外的按钮? 为什么它首先被创造出来? 任何帮助表示赞赏。
谢谢, 索
答案 0 :(得分:0)
您可以将按钮直接添加到表格中。这是不正确的,因为您不能在表格中有一个按钮。您需要<td>
元素。您可以使用WebMarkupContainer
创建一个。另请参阅示例NoRecordsToolbar