GWT CellBrowser- как всегда показывать все значения?

CellBrowser от GWT - отличный способ представления динамических данных.

Однако, когда браузер содержит больше строк, чем какой-то (казалось бы) произвольный максимум, он предлагает метку "Показать больше", по которой пользователь может щелкнуть, чтобы получить невидимые строки.

Как я могу отключить это поведение и заставить его всегда показывать каждую строку?

альтернативный текст

4 ответа

Решение

Есть несколько способов избавиться от "Показать ещё" (которые вы можете комбинировать):

  • В вашем TreeViewModel, в вашем NodeInfo"s setDisplay или в DataProvider ваша отдача DefaultNodeInfo, в onRangeChange: перезаписать видимый диапазон дисплея до размера ваших данных.

  • простираться CellBrowser и переопределить его createPager способ вернуть null, Это не изменит размер страницы списка, но вы также можете установить его на очень высокое значение.

Приведенный ниже CellBrowser удаляет текст "Показать больше" и загружает все доступные элементы без подкачки страниц.

public class ShowAllElementsCellBrowser extends CellBrowser {

    public ShowAllElementsCellBrowser(TreeViewModel viewModel, CellBrowser.Resources resources) {
        super(viewModel, null, resources);
    }

    @Override
    protected <C> Widget createPager(HasData<C> display) {
        PageSizePager pager = new PageSizePager(Integer.MAX_VALUE);

        // removes the text "Show More" during loading
        display.setRowCount(0);

        // increase the visible range so that no one ever needs to page
        display.setVisibleRange(0, Integer.MAX_VALUE);
        pager.setDisplay(display);

        return pager;
    }
}

Я нашел правильное и простое решение в настройке размера страницы для создателя CellBrowser. Надеюсь, это поможет.

CellBrowser.Builder<AClass> cellBuilder = new CellBrowser.Builder<AClass>(myModel, null); cellBuilder.pageSize(Integer.MAX_VALUE); cellBrowser = cellBuilder.build();

Самый простой способ сделать это с помощью:

cellTree.setDefaultNodeSize(Integer.MAX_VALUE);

метод на вашем клеточном дереве. Вы должны сделать это, прежде чем начать расширять дерево.

Мое решение - перемещаться по элементам treeview dom, чтобы получить элемент "Показать больше" с помощью

public static List<Element> findElements(Element element) {
    ArrayList<Element> result = new ArrayList<Element>();
    findShowMore(result, element);  return result; }

private static void findShowMore(ArrayList res, Element element) {
    String c;

    if (element == null) {      return;     }

    if (element.getInnerText().equals("Show more")) {       res.add(element);
    }

    for (int i = 0; i < DOM.getChildCount(element); i++) {      Element
child = DOM.getChild(element, i);       findShowMore(res, child);   } }

и чем использовать:

if (show) {   element.getStyle().clearDisplay(); } else {  
element.getStyle().setDisplay(Display.NONE); }
Другие вопросы по тегам