5

GWT 的CellBrowser是呈现动态数据的好方法。

但是,当浏览器包含的行数超过某个(看似)任意最大值时,它会提供一个“显示更多”标签,用户可以单击该标签来获取看不见的行。

如何禁用此行为,并强制它始终显示每一行?

替代文字

4

5 回答 5

2

有几种方法可以摆脱“显示更多”(您可以结合使用):

  • 在您的TreeViewModel,在您NodeInfosetDisplay或在DataProvider您给的DefaultNodeInfo,在onRangeChange:覆盖显示的可见范围为您的数据的大小。

  • 扩展CellBrowser并覆盖其createPager方法以返回null。虽然它不会改变列表的页面大小,但您也可以在那里将其设置为非常高的值。

于 2011-07-26T09:10:56.460 回答
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;
    }
}
于 2012-01-03T20:45:13.773 回答
0

在为 CellBrowser 的构建器设置页面大小时,我找到了一个有效且简单的解决方案。希望这会有所帮助。

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

于 2014-02-20T10:10:57.723 回答
0

最简单的方法是使用:

cellTree.setDefaultNodeSize(Integer.MAX_VALUE);

细胞树上的方法。您必须在开始扩展树之前执行此操作。

于 2014-12-29T17:05:36.703 回答
0

我的解决方法是浏览treeviewdom 的元素以获取“显示更多”元素

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); }
于 2020-02-20T14:48:08.937 回答