から行を削除しないボタンを削除:GWTのcelltable - 私は次のコードを使用してcelltableにボタン型電池列を追加テーブル
public class CellTableExample implements EntryPoint {
private static class Contact {
private String address;
private String name;
public Contact(String name, String address) {
super();
this.address = address;
this.name = name;
}
}
// The list of data to display.
private static List<Contact> CONTACTS = Arrays.asList(
new Contact("John", "123 Fourth Road asdf asdf asdfasdf"),
new Contact("Mary", "222 Lancer Lane")
);
@Override
public void onModuleLoad() {
CellTable<Contact> table = new CellTable<Contact>();
//address column
TextColumn<Contact> addressColumn = new TextColumn<Contact>(){
@Override
public String getValue(Contact contact) {
return contact.address;
}
};
//name column
TextColumn<Contact> nameColumn = new TextColumn<Contact>(){
@Override
public String getValue(Contact contact) {
return contact.name;
}
};
//delete button column
ButtonCell deleteButton= new ButtonCell();
Column <Contact,String> delete= new Column <Contact,String>(deleteButton)
{
@Override
public String getValue(Contact c)
{
return "Delete";
}
};
delete.setFieldUpdater(new FieldUpdater<Contact,String>()
{
@Override
public void update(final int index, Contact c,String value)
{
SQLRunnerAsync service = (SQLRunnerAsync) GWT.create(SQLRunner.class);
AsyncCallback callback = new AsyncCallback()
{
@Override
public void onFailure(Throwable caught)
{}
@Override
public void onSuccess(Object result)
{
CONTACTS.remove(index);
table.redraw();
}
};
service.deleteContact(c.id,callback);
}
});
// Add the columns.
table.addColumn(nameColumn, "Name");
table.addColumn(addressColumn, "Address");
table.addColumn(delete, "Delete");
table.setRowCount(CONTACTS.size(), true);
table.setRowData(0, CONTACTS);
RootPanel.get().add(table);
}
}ボタンが押され
を、接触がから削除されますデータベース。ただし、ページはリフレッシュされるまで同じままです。私はボタンが押されたときに、その行もすぐにテーブルから削除されるように何かできるのですか?
連絡先がデータベースから正常に削除されたが、機能していない場合は、code:table.redraw()を追加しました。
ありがとうございました。試してみました。 – sap
私はそれを聞いて申し訳ありません。とにかく、それはモデルを更新した後に自動でなければならないでしょうか? :/ Btw、あなたが役に立たなかった場合、この回答を削除しますか?ありがとう – Xorty
それは私が考えたものです。しかし、gwtはアプリケーションが初めて起動するとデータを取得します。テーブルが変更された場合は、データベースを呼び出してデータを再度取得して編集済みのテーブルを表示する必要があります。私は行が削除されたときにセルテーブルが自動的にそれを行うことを望んでいました。 – sap