如何清除GWT CellTable上的用户输入?

时间:2012-11-20 15:18:22

标签: java gwt

我有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

如何让列/单元格不记住用户输入?

1 个答案:

答案 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);