2012-02-10 43 views
1

在重置TreeTable的容器數據源之後,我試圖重新展開TreeTable中的對象,但我無法工作。有沒有人試過這個?我哪裏錯了?如何在vaadin中重新展開對象TreeTable

private void setTableDataSource() { 
    Set<Object> expandedMap = new HashSet<Object>(); 
    if(table.getItemIds() != null && !table.getItemIds().isEmpty()){ 
     for(Object o : table.getItemIds()){   
      if(table.isCollapsed(o)) 
       expandedMap.add(o); 
     } 
    }  
    table.setContainerDataSource(ContactContainerFactory.createContainer(model.getParentModel())); 
    table.setVisibleColumns(new String[]{"title", "operation", "id", "price"}); 
    table.setColumnHeaders(getTranslatedTableHeaders());   
    if(!expandedMap.isEmpty()){ 
     for(Object o : expandedMap){     
      table.setCollapsed(o, false); 
     } 
    } 
} 
+0

您使用哪種vaadin版本?你有沒有試過最後一晚的建設?看起來他們添加的方法可以讓你摺疊/展開所有元素:https://vaadin.com/forum/-/message_boards/view_message/948806#_19_message_948925 – Zakaria 2012-02-15 09:23:52

+0

Im使用版本6.7.4 – Marthin 2012-02-15 11:11:35

+0

@Marthin就像一個提示但我敢肯定你已經考慮過hash()和equals()方法。 – nexus 2013-03-12 12:49:02

回答

0

我做了這樣的:

summary.getItemIds().forEach(id -> { 
    summary.setCollapsed(id, false); 
    summary.getChildren(id).forEach(child -> { 
     summary.setCollapsed(child, false); 
    }); 
}); 

哪裏摘要樹表。這隻適用於2級表,但可以用遞歸方法完成。