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 に答える