2017-04-10 15 views
-1

我有一個由BeanItemContainer支持的網格。有沒有添加列的方法?我無法找到一種方式,因爲它給了我很多錯誤。我最終手動添加行到網格。我嘗試添加生成的屬性或普通的屬性,沒有運氣。Vaadin網格支持bean item容器添加列

public final class ExecutionGrid extends Grid { 

    public ExecutionGrid(String caption) { 
     super(caption); 
    } 

    public ExecutionGrid(String caption, List<Step> steps) { 
     super(caption); 
     setSteps(steps); 
    } 

    /** 
    * Add steps to this grid. 
    * 
    * @param steps Steps to set. It deletes any previous ones stored. 
    */ 
    public void setSteps(List<Step> steps) { 
     //Clear grid 
     removeAllColumns(); 
     setHeightByRows(steps.size()); 
     setHeightMode(HeightMode.ROW); 
     Grid.Column textColumn = addColumn("text", byte[].class); 
     textColumn.setHeaderCaption("Text"); 
     textColumn.setConverter(new ByteToStringConverter()); 
     Grid.Column expectedResultColumn = addColumn("expectedResult", byte[].class); 
     expectedResultColumn.setHeaderCaption("Expected Result"); 
     expectedResultColumn.setConverter(new ByteToStringConverter()); 
     Grid.Column notesColumn = addColumn("notes", String.class); 
     notesColumn.setHeaderCaption("Notes"); 
     Grid.Column resultColumn = addColumn("result", String.class); 
     resultColumn.setHeaderCaption("Result"); 
     steps.forEach((s) -> { 
      addRow(s.getText(), s.getExpectedResult(), s.getNotes(), ""); 
     }); 
    } 
} 

不知道我是否錯過了一些東西。

回答

0

請糾正我,如果我錯了,但認爲沒有辦法在網格中直接做到這一點。它可能與這個在BeanItemContainer中使用的反射東西有關。 但是,您可以創建一些具有所需屬性的POJO。

+0

我想這是勝過目的。在表格中,我可以添加在bean上不存在的自定義列。 – javydreamercsw