2012-09-26 39 views
4

我能夠使用celltablebuilder構建自定義行。當點擊一個特定的錨單元格時,我可以爲該行構建額外的子行。這個subrow有按鈕,當點擊按鈕我做了一些動作。我可以在click中添加clickhandler按鈕,但點擊按鈕時沒有任何事情發生,clickhandler不會觸發。如何將clickhandler添加到celltablebuilder的子行中

任何人都可以請幫忙。

protected void buildRowImpl(GridDTO rowValue, int absRowIndex) { 
    buildRows(rowValue, absRowIndex, true); 
    if (showingFriends.contains(rowValue.getComponentId())) { 
    buildAdditonalRows(absRowIndex, gridDTO); 
    } 

} 
private void buildAdditonalRows(int index, GridDTO rowValue,){ 
    TableRowBuilder row = startRow(); 
    td = row.startTD(); 
    if(rowValue.getXpath() != null){ 
    //td.text(rowValue.getXpath()); 
    renderCell(td, createContext(1), cellTable.getColumn(1), rowValue); 
}else{ 
    td.text(""); 
} 
    td.endTD(); 
    td = row.startTD(); 
    Button button = new Button(); 
button.setText("Save"); 
button.addClickHandler(new ClickHandler() { 
@Override 
public void onClick(ClickEvent event) { 
    Window.alert("ssss"); 
    } 
}); 
DivBuilder div = td.startDiv(); 
div.html(new afeHtmlBuilder().appendHtmlConstant(button.toString()).toSafeHtml()); 
div.end(); 
    td.endTD(); 
    row.endTR(); 
} 
+1

我有類似的問題,但我不能建立子行。你能否顯示你的構建行代碼? –

+0

我在這裏回答了類似的問題:http://stackoverflow.com/questions/8642622/how-to-add-widget-as-a-cell-in-cell-table-gwt/14702004#14702004 – mkb

回答

0

我也有類似的情況,我需要一個單元格中的小工具來監聽click事件......我發現了什麼是小部件不響應的事件一旦其插入到細胞(換句話說,只有組成該小部件的實際HTML纔會被放入單元中,不包括任何類型的事件處理)。解決方法是將事件添加到單元格中(您可以爲該特定單元格窗口小部件創建自定義單元類並覆蓋OnBrowserEvent以偵聽事件。)

有關更具說服力的解釋和示例代碼,請參見GWT: On adding custom widget to celltable losing events of the custom widgets

1

CellPreviewEvent提供子索引。您可以使用它來獲取子值。 用法示例:

dataGrid.addCellPreviewHandler(new CellPreviewEvent.Handler<TreeItem>() { 
    @Override 
    public void onCellPreview(final CellPreviewEvent<TreeItem> event) { 
     if(event.getNativeEvent().getType().equals(BrowserEvents.CLICK)){ 
      if(event.getContext().getSubIndex()>0){ 
        event.getValue().getChild(event.getContext().getSubIndex()-1); 
      } 
     } 
    } 
}); 

或者可以爲用戶提供定製的SelectionMode實施CellPreviewEvent.Handler。欲瞭解更多詳情,你可以看看AbstractHasData

相關問題