我有CellTable<Price> table = new CellTable<Price>();
。
我还有一个TextInputCell
列:
priceColumn = new Column<Price, String>(new TextInputCell()) {
public String getValue(Price p) {
if (p.getPrice() == 0)
return "";
return p.getPrice()+"";
}
};
我也有refresh button
。如果按下该按钮,则它基本上从服务器重新加载所有数据,然后将数据设置到表中。
当表第一次加载数据时,没关系。比方说,一个单元格的价格 12 。
然后,如果我将该单元格修改为 11(或12以外的任何值),那么11
将永远保留在那里。我的意思是,即使我按下refresh button
,单元格的数据也不会更改回12
,但仍会保留11
。
如何让列/单元格不记住用户输入?
答案 0 :(得分:0)
收到新数据并使用新数据电话table.redraw();
工作示例
final Price p1 = new Price(4);
final Price p2 = new Price(5);
final Price p3 = new Price(6);
final CellTable<Price> table = new CellTable<Price>();
Column<Price, String> priceColumn = new Column<Price, String>(new TextInputCell()) {
public String getValue(Price p) {
if (p.getPrice() == 0)
return "";
return p.getPrice() + "";
}
};
ListDataProvider<Price> dataProvider = new ListDataProvider<Price>();
dataProvider.addDataDisplay(table);
List<Price> list = dataProvider.getList();
list.add(p1);
list.add(p2);
list.add(p3);
table.addColumn(priceColumn);
Button b = new Button("refresh");
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// your refresh logic, update the items already loaded into the CellTable!
p2.setPrice(1000);
p3.setPrice(2000);
table.redraw();
}
});
RootPanel.get().add(table);
RootPanel.get().add(b);