2

TextInputCellsの列を持つCellTableがあります。

UIから手動で値を設定すると、Beanが変更されます。しかし、値をBeanに直接設定すると、変更を表示するテーブルを作成できません。それは私が手動で割り当てたものを常に保持します。

これが私のコラムです:

FieldUpdater<MyBean, String> myFu = new FieldUpdater<MyBean, String>() {
  @Override
  public void update(int index, MyBean object, String value) {
    object.setValue(value);
  }
};

Column<MyBean, String> myCol = new Column<MyBean, String>(new TextInputCell()) {
  @Override
  public String getValue(MyBean object) {
    return object.getValue();
  }
};

アクションは次のとおりです。

@UiHandler("myButton")
public void myButton_onClick(ClickEvent event) {
  for (MyBean my : listOfBeans)
    my.setValue("value");
}

アクションの後で、を呼び出しtable.redraw()たり、クリアして補充したりしようとしましListDataProviderたが、何も変わりません。

私に何ができる ?

ありがとう

4

2 に答える 2

2

わかりました、私は(はるかにフェッチされた)方法を見つけました。それはくだらないですが、それは動作します。

int inputTextColumnPos; // position of your column

...

@UiHandler("myButton")
public void myButton_onClick(ClickEvent event) {
  for (MyBean my : listOfBeans) {
    my.setValue("value");

    // get the cell you want to update
    TextInputCell cell = (TextInputCell) table.getColumn(inputTextColumnPos).getCell();
    // re-create the view data for the cell because the current one isn't updated
    TextInputCell.ViewData viewData = new TextInputCell.ViewData("value");
    // CRUSH the other one 
    cell.setViewData(my, viewData);
  }

  // because we're never too sure
  table.redraw();
}
于 2012-08-30T15:25:28.437 に答える
0

私も同じ問題を抱えていましたが(私はを使用していましたEditTextCell)、解決策を見つけることができませんでした。私はほとんどすべてのことを試しました。そこで私は別の方法を思いついた。

その列をに戻し、TextCellに追加SingleSelectionModelしましたCellTable.setSelectionModel(SingleSelectionModel)。作成TextBoxして、下に配置しましたCellTable。ユーザーが選択を変更するたびにTextBox、その列の値で更新されるように機能するようにしました。追加しましたTextBox.addChangeHandler()。このメソッド内で、を更新してから更新してBeanDataProviderます。このアプローチはうまく機能しています。それが役に立てば幸い。ありがとう..

于 2012-08-21T13:31:47.787 に答える