我有一个包含 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()
方法中,我认为根据列表框中的选择添加类名的逻辑。但我正在寻找更通用的解决方案:)