2012-01-18 96 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