更改列名称 - Vaadin 7.8.4

时间:2017-07-31 19:14:21

标签: java grid containers vaadin propertygrid

我在网格中使用了IndexedContainer。

Grid grid = new Grid();
IndexedContainer container = new IndexedContainer();
grid.setContainerDataSource(container);
container.addContainerProperty("Something", String.class, "");

我需要更改容器属性的名称。 E.g在单击按钮后将“Something”改为“New property”。有任何想法吗 ?非常感谢你!

1 个答案:

答案 0 :(得分:3)

注1:你从哪里获得vaadin 7.8.4?我能看到的最新7.x release是7.7.10。在本练习中,我假设它是一个错字并使用7.7.4 ...

注意2:不确定是否只想更改列标题或整个属性ID ...如果它只是您可以使用的标题:

grid.getColumn("Something").setHeaderCaption("Something else");

AFAIK无法更改财产。但是,您可以通过删除它并添加一个新的来解决此问题:

public class MyGridWithChangeableColumnHeader extends VerticalLayout {
    public MyGridWithChangeableColumnHeader() {
        // basic grid setup
        Grid grid = new Grid();
        IndexedContainer container = new IndexedContainer();
        grid.setContainerDataSource(container);
        container.addContainerProperty("P1", String.class, "");
        container.addContainerProperty("Something", String.class, "");
        container.addContainerProperty("P3", String.class, "");

        // button to toggle properties
        Button button = new Button("Toggle properties", event -> {
            String oldProperty, newProperty;
            if (container.getContainerPropertyIds().contains("Something")) {
                oldProperty = "Something";
                newProperty = "Something else";
            } else {
                oldProperty = "Something else";
                newProperty = "Something";
            }

            container.removeContainerProperty(oldProperty);
            container.addContainerProperty(newProperty, String.class, "");
            grid.setColumnOrder("P1", newProperty, "P3");
        });

        addComponents(grid, button);
    }
}

结果:

container-toggle-property