4

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();
}
4

2 に答える 2

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を参照してください。

于 2015-01-16T11:52:50.927 に答える
0

クリックイベントをリッスンするためにセル内にウィジェットが必要な同様の状況がありました...私が見つけたのは、セルに挿入するとウィジェットがイベントに応答しないことです(つまり、実際のウィジェットを構成する HTML がセルに挿入されます。イベント処理は含まれません)。回避策は、Cell にイベントを追加することです (その特定のセル ウィジェット用のカスタム セル クラスを作成し、OnBrowserEvent をオーバーライドしてイベントをリッスンすることができます)。

より雄弁な説明とサンプル コードについては、GWT: カスタム ウィジェットのセルテーブルへの追加でカスタム ウィジェットのイベントを失うを参照してください。

于 2012-09-28T10:48:45.757 に答える