2013-04-06 51 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"); 

我希望有人給你一個更好的解決方案!