GWT CellBrowser-如何始终显示所有值?

时间:2011-01-11 19:22:56

标签: gwt cellbrowser

GWT的CellBrowser是呈现动态数据的绝佳方式。

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

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

alt text

5 个答案:

答案 0 :(得分:2)

有几种方法可以摆脱“显示更多”(可以合并):

  • TreeViewModelNodeInfo setDisplayDataProvider 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); }