名前用、タイプ用、イメージ用の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()
リストボックスでの選択に応じてクラス名を追加するために考えたロジックであるメソッドで。しかし、私はより一般的な解決策を探しています:)