GWT的CellBrowser是呈现动态数据的好方法。
但是,当浏览器包含的行超过某个(看似)任意最大值时,它会提供一个“显示更多”标签,用户可以单击该标签以获取未看到的行。
如何禁用此行为,并强制其始终显示每一行?
有几种摆脱“显示更多”(您可以结合使用)的方法:
在您的TreeViewModel
中,在NodeInfo
的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的元素,以使用”显示更多”元素。
公共静态列表findElements(Element element){ArrayList结果= new ArrayList();findShowMore(result,element);返回结果; }
私有静态void findShowMore(ArrayList res,Element element){字符串c;
if(element == null){return; }
if(element.getInnerText()。equals(“ Show more”)){res.add(element);}
for(int i = 0; i
并且不使用:
if (show) { element.getStyle().clearDisplay(); } else { element.getStyle().setDisplay(Display.NONE); }