2012-01-18 58 views
2

我试图添加一个子元素treetable(元素是一个Bean),但不知何故结果是奇怪的。我把一个小例子放在一起。Vaadin添加子项目treetable

 BeanItemContainer<Project> bic = new BeanItemContainer<Project>(Project.class); 
TreeTable projectTable = new TreeTable(); 
projectTable.setContainerDataSource(bic); 

bic.addBean(Root); 
bic.addBean(p1); 
bic.addBean(p2); 
bic.addBean(p3); 

projectTable.setParent(p1, Root); 
projectTable.setParent(p2, Root); 
projectTable.setParent(p3, p1); 

正如你可以在最后一行P1看应该是P3的父母,结果:see the pic.(P3成为P2的子女)

代码可以从这里访问:goo.gl/ BMXiv

有2个主要文件:

TttestApplication.class

Project.class

+0

我认为你需要提供更多的代码来获得这方面的帮助。 – Marthin 2012-01-19 10:59:21

+0

更多的代码可能会令人困惑,我需要一些时间来思考我做了什么。 – cscsaba 2012-01-19 13:33:57

+0

嘿马丁,我简化了这个例子,如果你有时间检查。 – cscsaba 2012-01-19 19:12:48

回答

0

可惜的是,我不能在这个问题上面弄,所以我加载由“addProjectToTree” 豆类,一切发生,因为通常使用的addItem。

.... beans' initialization 
Root = new Project("Projects","Indoor","HI", new Date(), new Date(),this.getNextId(),null); 
... 
... columns' creation 
projectTable.addContainerProperty("description", String.class, ""); 
... 
... 
addProjectToTree(Root);  

public Object addProjectToTree(Project p) 
{ 
    Object id = projectTable.addItem(new Object[] {p.getDescription(),p.getKeyword() ...); 
    if(p.getParentId()!=null) 
    { 
     projectTable.setParent(id, p.getParentId()); 
    } 
    return id; 
} 

就是这样。

Cs

+1

在屏幕截图中你的问题的唯一解释是,P3以某种方式认为p2是root(具有相同的id可能?) – 2014-07-22 21:53:31