Vaadin网格支持bean项容器添加列

时间:2017-04-10 19:05:52

标签: vaadin7

我有一个由BeanItemContainer支持的Grid。有没有办法为它添加列?我找不到办法,因为它给了我很多错误。我最终手动将行添加到网格中。我试着添加生成的属性或普通属性而没有运气。

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(), "");
        });
    }
}

想知道我是否遗漏了什么。

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但认为没有办法直接在Grid中执行此操作。它可能与BeanItemContainer中使用的反射内容有关。 但是,您可以创建某种具有所需属性的POJO。