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 が正確に一致します。ただし、テーブルを並べ替えると、余分なボタンがビューから削除されます。
クリックするたびに余分なボタンが作成されないようにするにはどうすればよいですか? そもそもなぜ作られているのでしょうか?どんな助けでも大歓迎です。
ありがとう、ソナム