Apache Wicket - 使用DefaultDataTable实现AbstractToolbar

时间:2012-07-27 10:40:42

标签: apache datatable wicket wicket-1.5

我正在尝试将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完全匹配。在对表进行排序时,会从视图中删除额外的按钮。

有人可以帮助我如何避免在每次点击时创建额外的按钮? 为什么它首先被创造出来? 任何帮助表示赞赏。

谢谢, 索

1 个答案:

答案 0 :(得分:0)

您可以将按钮直接添加到表格中。这是不正确的,因为您不能在表格中有一个按钮。您需要<td>元素。您可以使用WebMarkupContainer创建一个。另请参阅示例NoRecordsToolbar

的来源