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 に答える