0

CellTableにいくつかのテキストといくつかのボタンを入れたいです。テキストとボタンは表示できますが、ボタンをクリックしても何も起こりません。

final SafeHtmlCell detailsCell = new SafeHtmlCell();
    Column<UIRow, SafeHtml> detailsColumn = new Column<UIRow, SafeHtml>(
            detailsCell) {
        @Override
        public SafeHtml getValue(UIRow object) {
            String details = "some informations xxx <br/>";

            Button addButton = new Button("Add value", new ClickHandler() {
                public void onClick(ClickEvent event) {
                  Window.alert("hello");
                }
            });
            details += addButton;

    SafeHtmlBuilder sb = new SafeHtmlBuilder();
            sb.appendHtmlConstant(details);

            return sb.toSafeHtml();
        }
    };
    detailsColumn.setCellStyleNames(CSS_DETAILS_TD);
    table.setColumnWidth(detailsColumn, "10%");
table.addColumn(detailsColumn, new SafeHtmlHeader(SafeHtmlUtils.fromSafeConstant("details")));

しかし、セルごとにボタンを配置すると、機能し、onClick メソッドが呼び出されます。

        final ButtonCell btnCell = new ButtonCell() {
            @Override
            public void render(
                    final Context context,
                    final SafeHtml data,
                    final SafeHtmlBuilder sb) {
                sb.appendHtmlConstant("<button type=\"button\" style=\"height: 25px\" title=\"submit\" class=\"btn btn-success btn-small\" tabindex=\"-1\">");
                if (data != null) {
                    sb.append(data);
                }
                sb.appendHtmlConstant("</button>");
            }
        };

        Column<UIRow, String> btnColumn = new Column<UIRow, String>(btnCell) {
            @Override
            public String getValue(UIRow object) {
                return "";
            }
        };
        btnColumn.setCellStyleNames("td-actions");
        table.addColumn(btnColumn, "");
        table.setColumnWidth(btnColumn, "5%");

        btnColumn.setFieldUpdater(new FieldUpdater<UIRow, String>() {
            public void update(int index, UIRow object, String value) {

               ...

                service.submit(object, false, new AsyncCallback<String>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        Window.alert(caught.getMessage());
                    }

                    @Override
                    public void onSuccess(String result) {
                        Window.alert(result);
                    }

                });

            }
        });
    }

Html テキストとボタンを 1 つの列/セルに表示したいのですが、可能ですか?

ありがとう

4

1 に答える 1

0

セル ウィジェット (CellTable、DataGrid など) は、Button などの通常の GWT ウィジェットを埋め込むようには設計されていません。

ボタンにはButtonCellを使用できます

公式の例を見てみましょう: http://samples.gwtproject.org/samples/Showcase/Showcase.html#!CwCellSampler

アップデート:

セルを結合する方法に関する質問の 2 番目の部分については、いくつかのオプションがあります。

  • 複数のセル (ButtonCell と TextCell など) を結合できるCompositeCellを確認してください。

  • もう 1 つのオプションは、colspan、列/行の装飾など、テーブル レンダリングのすべての側面をカスタマイズできるカスタムCellTableBuilderを使用することです。

于 2015-01-23T16:55:40.907 に答える