Vaadin表:仅在单击按钮时加载数据

时间:2013-06-13 11:45:18

标签: java lazy-loading vaadin

我的表有一个大查询,所以我想让用户在显示表数据之前过滤一些字段。

只有点击某个按钮才能使表格获取数据?实际上,当我加载我的视图时,表格已经获取了数据,这是由PagedTableLazyBeanContainer(我使用Lazy Container对我的表进行分页)制作的?

2 个答案:

答案 0 :(得分:3)

首先你可以初始化表

Table table = new Table()

然后你应该为你的表定义一个容器(我建议你使用BeanItemContainer)

BeanItemContainer<YourObject> container = new BeanItemContainer<YourObject>(YourObject.class);

最后,您应该在Button.ClickListener

中填充容器
Button button = new Button("Button", new Button.ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                table.setContainerDataSource(container);
            }
        });

答案 1 :(得分:0)

我的解决方案是在创建视图时设置生成的列:

String[] columns = new String[]{"id","myField"}

for(String col : columns) {
  table.addGeneratedColumn(col, new ColumnGenerator() {
    public Object generateCell(Table source, Object itemId, Object columnId) {
      return "";
    }
  });
}

这导致一个空表,但有列和标签。然后在按钮单击中,我设置容器并删除旧列:

for(String col : columns) {
  table.removeGeneratedColumn(col);
}
table.setContainerDataSource(myContainer);
...