0

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

是否可以仅通过单击某个按钮使表格获取数据?实际上,当我加载视图时,表已经获取了数据,这是由PagedTableLazyBeanContainer(我正在使用Lazy Container对我的表进行分页)制作的?

4

2 回答 2

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);
            }
        });
于 2013-06-13T17:03:53.217 回答
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);
...
于 2013-06-13T16:44:35.247 回答