GWT: Как я могу добавить якорную ячейку в свой CellTable - PullRequest
0 голосов
/ 13 февраля 2012

Есть идеи, как добавить якорь в мой CellTable? Я нашел здесь тот же вопрос, но не смог найти для этого работающего решения.

Может ли кто-нибудь предоставить рабочий код для добавления якоря в столбце CellTable?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Виджет Anchor не может быть добавлен в CellTable, поскольку все виджеты ячеек умеют рисовать только Cell<C> экземпляры.Это позволяет им рисовать и перерисовывать свой контент намного быстрее / эффективнее, чем они могли бы сделать с Widget s.

Элементом привязки html, <a href='someUrl'>text</a> можно легко нарисовать как Cell.Подкласс AbstractCell и определите метод рендеринга для рисования этого html, чередуя с любым текстом или ссылкой, на которую вы хотите перенаправить.Затем, при построении CellTable, передайте этот экземпляр Cell в конструктор Column.

Посмотрите на некоторые из существующих Cell в GWT, чтобы увидеть, как еще можно рисовать вещи(например, ButtonCell.render делает кнопку вместо a) или как обрабатывать события (AnchorCell о том, как обрабатывать щелчок программно, вместо того, чтобы разрешить перенаправление на новую страницу, или TextInputCell для более сложного примера).

0 голосов
/ 03 июля 2018

Мне нравится использовать SafeHtmlCell для рендеринга HTML виджета в CellTable:

Column<MyTableType, SafeHtml> anchorColumn = new Column<MyTableType, SafeHtml>(new SafeHtmlCell()) {
    @Override
    public SafeHtml getValue(MyTableType object) {
        Anchor anchor = new Anchor(...);
        return SafeHtmlUtils.fromTrustedString(anchor.toString());
    }
};

Обратите внимание, что Widget.toString(); возвращает HTML-фрагмент виджета, предназначенный для просмотра в отладчике. Он не будет содержать ни обработчиков, ни слушателей. Это будет просто HTML, но этого достаточно для рендеринга простых вещей в CellTable.

...