GWT的CellBrowser是呈现动态数据的绝佳方式。
但是,当浏览器包含的行数多于某些(看似)任意最大值时,它会提供一个“显示更多”标签,用户可以单击该标签来获取看不见的行。
如何禁用此行为,并强制它始终显示每一行?
答案 0 :(得分:2)
有几种方法可以摆脱“显示更多”(可以合并):
在TreeViewModel
,NodeInfo
setDisplay
或DataProvider
DefaultNodeInfo
onRangeChange
中,{{1} }:将显示的可见范围覆盖到数据大小。
扩展CellBrowser
并覆盖其createPager
方法以返回null
。它不会改变列表的页面大小,但你也可以将其设置为非常高的值。
答案 1 :(得分:2)
以下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;
}
}
答案 2 :(得分:0)
我找到了一个有效且简单的解决方案,可以将页面大小设置为CellBrowser的构建器。 希望这会有所帮助。
CellBrowser.Builder<AClass> cellBuilder = new CellBrowser.Builder<AClass>(myModel, null);
cellBuilder.pageSize(Integer.MAX_VALUE);
cellBrowser = cellBuilder.build();
答案 3 :(得分:0)
最简单的方法是使用:
cellTree.setDefaultNodeSize(Integer.MAX_VALUE);
你的Cell Tree上的
方法。在开始扩展树之前,必须执行此操作。
答案 4 :(得分:0)
我的解决方法是浏览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); }