我创建了一个包含联系人的CellTable。某些联系人已由客户填写到表中。在onModuleLoad函数中,请求另一个Contact对象。现在我想在表格中添加另一行
在onModuleLoad函数中我添加了表小部件,在onSuccess中我想用接收到的联系人向表中添加一个新的数据行:
List<Contact> cList = getKnownContacts();
CellTable<Contact> table = new CellTable<Contact>();
final ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();
dataProvider.setList(cList);
dataProvider.addDataDisplay(table);
// Create name column.
TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact contact) {
return contact.getName();
}
};
// Create address column.
TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact contact) {
return contact.getAddress();
}
};
table.addColumn(nameColumn, "Name");
table.addColumn(nameColumn, "Address");
RootPanel.get().add(table);
contactService.getContactById(1234,
new AsyncCallback<Contact>() {
public void onFailure(Throwable caught) {
...
}
public void onSuccess(Contact result) {
// add row to table???
}
}
);
答案 0 :(得分:0)
您需要做的就是致电:
cList.add(result);
答案 1 :(得分:0)
问题是dataProvider.getList().add(result);
的执行引发了异常,因为列表中不支持“添加”功能。我认为原因是dataProvider
是final
。这是解决方案:
List<Contact> newList = new ArrayList<Contact>(dataProvider.getList());
newList.add(result);
dataProvider.refresh();