首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >瓦丁,TreeTable。setParent

瓦丁,TreeTable。setParent
EN

Stack Overflow用户
提问于 2016-11-03 21:31:52
回答 1查看 248关注 0票数 0

我在TreeTable中创建父子链接时遇到问题。

DataSource的设置

代码语言:javascript
复制
table.setContainerDataSource(new TempPeopleContainer(((MyUI) UI.getCurrent()).peopleService.getItemList()));
table.setParent(1,0);

如何在这种DataSource设置中设置对象的id?我没有显式的TreeTable元素Id。

下面是example from vaadin,在这里你可以“清楚”地看到每个元素的Id定义(代码不是来自我的应用程序):

代码语言:javascript
复制
 TreeTable ttable = new TreeTable("My TreeTable");
    ttable.addContainerProperty("Name", String.class, null);
    ttable.addContainerProperty("Number", Integer.class, null);
    ttable.setWidth("20em");

    // Create the tree nodes and set the hierarchy
    ttable.addItem(new Object[]{"Menu", null}, 0);
    ttable.addItem(new Object[]{"Beverages", null}, 1);
    ttable.setParent(1, 0);
    ttable.addItem(new Object[]{"Foods", null}, 2);
    ttable.setParent(2, 0);

这是我的TempPeopleContainer类定义:

代码语言:javascript
复制
private class TempPeopleContainer extends FilterableListContainer<People> {
    public TempPeopleContainer(final Collection<People> collection) {
        super(collection);
    }

    // This is only temporarily overridden until issues with
    // BeanComparator get resolved.
    @Override
    public void sort(final Object[] propertyId, final boolean[] ascending) {
        final boolean sortAscending = ascending[0];
        final Object sortContainerPropertyId = propertyId[0];
        Collections.sort(getBackingList(), (o1, o2) -> {
            int result = 0;
            if ("lastname".equals(sortContainerPropertyId)) {
                result = o1.getLastname().compareTo(o2.getLastname());
            }
            if (!sortAscending) {
                result *= -1;
            }
            return result;
        });
    }
}

我希望我的问题是清楚的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-11-04 01:33:24

这取决于您的ItemContainer。vaadin中的公共BeanItemContainer使用该项目作为项目id本身,如https://vaadin.com/api/com/vaadin/data/util/BeanItemContainer.html中所述

您正在使用vitrin的org.vaadin.viritin.ListContainer,表现得像BeanItemContainer

因此,如果您想坚持自己的ItemContainer实现,则可以使用列表中的项作为itemId/newParentId

或者,您可以通过迭代com.vaadin.data.Container.getItemIds()获得项目id,并手动检查此项目id是否是您想要使用的父id。

编辑:

尝试如下所示:

代码语言:javascript
复制
List myList = ((MyUI) UI.getCurrent()).peopleService.getItemList();
TempPeopleContainer container = new TempPeopleContainer(myList);
table.setContainerDataSource(container);
table.setParent(myList.get(1), myList.get(0));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40402813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档