2013-04-06 41 views
1

我有一个单元格表,其中一列用于名称,一列用于类型,另一列用于图片。在gwt中为celltable的单元格添加动态样式名称

我有另一个列表框指定单元格表格的类型列中存在的类型。

单元格表格类型对于多于一行可能是相同的。当我在列表框中选择一个类型时,单元格表格中所有不具有相同类型的行应该在图像单元格中添加一个图标。

直到现在,我可以根据在单元格中输入的值自动搜索动态添加样式名称。但是现在我的意图是根据另一个小部件的值来设置动态样式名称。

请给我一个答案。下面的代码提供

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

+0

从上面的描述中得到确切的问题非常困难。您可以发表一些代码吗? – 2013-04-06 13:37:39

回答

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"); 

我希望有人给你一个更好的解决方案!

相关问题