0

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

如何使列/单元格不记得用户输入?

4

1 回答 1

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);
于 2012-11-21T00:55:05.027 回答