GWT CellBrowser- как всегда показывать все значения?
CellBrowser от GWT - отличный способ представления динамических данных.
Однако, когда браузер содержит больше строк, чем какой-то (казалось бы) произвольный максимум, он предлагает метку "Показать больше", по которой пользователь может щелкнуть, чтобы получить невидимые строки.
Как я могу отключить это поведение и заставить его всегда показывать каждую строку?
4 ответа
Есть несколько способов избавиться от "Показать ещё" (которые вы можете комбинировать):
В вашем
TreeViewModel
, в вашемNodeInfo
"ssetDisplay
или в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); }