1

名前用、タイプ用、イメージ用の3列のセルテーブルがあります。

セル テーブルの型列に存在する型を指定する別のリスト ボックスがあります。

セル テーブルの型が複数の行で同じ場合があります。リスト ボックスで型を選択すると、同じ型を持たないセル テーブルのすべての行の画像セルにアイコンが追加されます。

今までは、そのセル自体に入力された値に応じて動的に追加するスタイル名を検索できました。しかし、私の意図は、別のウィジェットの値に応じて動的なスタイル名を持つことです。

答えを教えてください。以下は提供されたコードです

public class CellTableExample implements EntryPoint, ChangeHandler {

  CellTable<NameType> ct = new CellTable<NameType>();
  TextColumn<NameType> nameColumn;
  ListBox typeListBox = new ListBox();

  public void onModuleLoad() {
    typeListBox.addChangeHandler(this);
    nameColumn = new TextColumn<NameType>() {
      @Override
      public String getValue(NameType object) {
        return object.getName();
      }
    };
    ct.addColumn(nameColumn, "Name");

    TextColumn<NameType> name1Column = new TextColumn<NameType>() {
      @Override
      public String getValue(NameType object) {
        return object.getType();
      }
    };
    ct.addColumn(name1Column, "Name1");

    List<NameType> values = new ArrayList<NameType>();

    NameType nameType1 = new NameType("name1", "type1");

    NameType nameType2 = new NameType("name2", "type2");

    values.add(nameType1);
    values.add(nameType2);
    ct.setRowData(values);

    ct.setLoadingIndicator(null);
    typeListBox.addItem("type1");
    typeListBox.addItem("type2");
    HorizontalPanel hp = new HorizontalPanel();
    hp.add(typeListBox);
    hp .add(ct);


    RootPanel.get().add(hp);
  }

  @Override
  public void onChange(ChangeEvent event) {
    String type = typeListBox.getValue(typeListBox.getSelectedIndex());
    int rowCount = ct.getRowCount();

    for(int i=0;i < rowCount; i++) {
      String value = ct.getRowElement(i).getCells().getItem(1).getInnerText();

      if(type.equals(value)) {
        Window.alert("came here");
        TableCellElement cellElement = ct.getRowElement(i).getCells().getItem(0);
        cellElement.addClassName("information icon");
      }
    }
  }
}

onChange()リストボックスでの選択に応じてクラス名を追加するために考えたロジックであるメソッドで。しかし、私はより一般的な解決策を探しています:)

4

1 に答える 1

0

テーブルによってレンダリングされた後、セルの内容を操作する方法がわかりません。しかし、私はそれほど素晴らしいものではありませんが実行可能なアイデアを持っています.いくつかのIDまたはカスタムHTML属性をセルにレンダリングして、後で標準ではあるがGWTとはまったく異なるDOM操作を介してそれらにアクセスできるようにします:

<td><img src=".." id="icon-of-entity-123" /></td>

そして、このようなことを達成した場合、ビジネスロジックの後半で、レンダリング後でも低レベルで操作できます:

Element e = DOM.getElementById("icon-of-entity-" + getId());
e.setAttribute("class", "someclassname");

誰かがあなたにもっと良い解決策を教えてくれたらいいのに!

于 2013-04-06T19:01:05.987 に答える