2

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

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

谢谢,索南

4

1 回答 1

0

您将按钮直接添加到表中。这是不正确的,因为表格中不能有按钮。你需要一个<td>元素。您可以使用WebMarkupContainer. 另请参见例如的来源NoRecordsToolbar

于 2013-02-09T11:38:15.283 回答