Столы и пейджинг - PullRequest
       26

Столы и пейджинг

1 голос
/ 07 апреля 2011

Буду благодарен за любые идеи.

Требование

(A) таблица, содержащая

A.1 text columns
A.2 one column for HTML content
A.3 one column to house a radio button group

(B) возможность пролистывать записи, например, с помощью SimplePager.

Рассмотренные варианты

  1. FlexTable - может предоставить все (A), но не (B)
  2. CellTable - может предоставлять A.1 и (B), но не A.2 или A.3

Может кто-нибудь предложить альтернативу (ы), которая обеспечивает все А и В? Я также посмотрел на Smart GWT, но ничего не могу использовать. Но я не очень опытен ни в GWT, ни в Smart GWT.

Спасибо.


[править 1] Группа радиокнопок с тремя кнопками теперь создается следующим образом («Тип данных InterimReport»):

Column<InterimReport, SafeHtml> radioButtonColumn = new Column<InterimReport, SafeHtml>(new SafeHtmlCell()) {

    @Override
    public SafeHtml getValue(InterimReport object) {
    String s = "<input type=\"radio\" name=\"selection\"" + object.get("dbIndex") + " value=\"match\" /> match<br />"+ "<input type=\"radio\" name=\"selection\"" + object.get("dbIndex")+ " value=\"nomatch\" /> no match<br />" + "<input type=\"radio\" name=\"selection\""+ object.get("dbIndex") + " value=\"urlnotfound\" /> URL not found</>";

    return SafeHtmlUtils.fromTrustedString(s);
    }
};

[править 2] Но как зафиксировать выбранный пользователем переключатель? Этот фрагмент кода ничего не делает:

radioButtonColumn.setFieldUpdater(new FieldUpdater<InterimReport, SafeHtml>() {
    public void update(int index, InterimReport object, SafeHtml value) {
        System.out.println("Reached here");
        if (value.equals("match")) {
            setMatch(object.get("dbIndex"), index);
        } else if (value.equals("nomatch")) {
            setNoMatch(object.get("dbIndex"), index);
        } else if (value.equals("urlnotfound")) {
            setUrlNotFound(object.get("dbIndex"), index);
        }
    }
});

1 Ответ

0 голосов
/ 07 апреля 2011

CellTable может содержать содержимое HTML (SafeHtmlCell), а также может содержать группу переключателей.Просто используйте <input type="radio" name="whatever"/> в качестве HTML.Вы просто не можете использовать виджеты в CellTable - все остальное будет работать.

Column<YourType, SafeHtml> radioColumn = new Column<YourType, SafeHtml>(new SafeHtmlCell())
{
    @Override
    public SafeHtml getValue(YourType object)
    {
        return generateInputHtmlFromObject(object);
    }
}

cellTable.addColumn(radioColumn);

(извините, непроверенный код. Возможно, я неправильно запомнил сигнатуру метода или что-то в этом роде)

...