在gwt中为celltable的单元格添加动态样式名称
我有一个单元格表,有3列,一列表示名称,一列表示类型,一列表示图像 我有另一个列表框,指定单元格表的type列中存在的类型 多行的单元格内表格类型可能相同。当我在列表框中选择一个类型时,单元格内表格中所有不具有相同类型的行都应该在图像单元格中添加一个图标 到目前为止,我可以根据在单元格中输入的值动态搜索添加样式名称。但现在我的意图是根据另一个小部件的值使用动态样式名称 请给我一个答案。下面是提供的代码在gwt中为celltable的单元格添加动态样式名称,gwt,Gwt,我有一个单元格表,有3列,一列表示名称,一列表示类型,一列表示图像 我有另一个列表框,指定单元格表的type列中存在的类型 多行的单元格内表格类型可能相同。当我在列表框中选择一个类型时,单元格内表格中所有不具有相同类型的行都应该在图像单元格中添加一个图标 到目前为止,我可以根据在单元格中输入的值动态搜索添加样式名称。但现在我的意图是根据另一个小部件的值使用动态样式名称 请给我一个答案。下面是提供的代码 public class CellTableExample implements EntryP
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");
}
}
}
}
公共类CellTableExample实现入口点、ChangeHandler{
CellTable ct=新的CellTable();
textColumnNameColumn;
ListBox-typeListBox=新建ListBox();
moduleload()上的公共void{
addChangeHandler(这个);
nameColumn=newtextColumn(){
@凌驾
公共字符串getValue(NameType对象){
返回object.getName();
}
};
ct.addColumn(名称栏,“名称”);
TextColumn name 1column=新TextColumn(){
@凌驾
公共字符串getValue(NameType对象){
返回object.getType();
}
};
ct.addColumn(名称1列,“名称1”);
列表值=新的ArrayList();
NameType nameType1=新的NameType(“name1”、“type1”);
NameType nameType2=新的NameType(“name2”、“type2”);
添加(名称类型1);
添加(名称类型2);
ct.setRowData(值);
ct.setLoadingIndicator(空);
typeListBox.addItem(“type1”);
typeListBox.addItem(“type2”);
HorizontalPanel hp=新HorizontalPanel();
hp.add(typeListBox);
hp.add(ct);
RootPanel.get().add(hp);
}
@凌驾
更改后的公共作废(更改事件){
字符串类型=typeListBox.getValue(typeListBox.getSelectedIndex());
int rowCount=ct.getRowCount();
对于(int i=0;i
在
onChange()
方法中,我认为这是根据列表框中的选择添加类名的逻辑。但我正在寻找更通用的解决方案:)我不知道在表格呈现单元格内容后如何操作单元格内容。然而,我有一个想法,虽然不是很好,但却是可行的:将一些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");