我的表有一个大查询,所以我想让用户在显示表数据之前过滤一些字段。
只有点击某个按钮才能使表格获取数据?实际上,当我加载我的视图时,表格已经获取了数据,这是由PagedTable
或LazyBeanContainer
(我使用Lazy Container对我的表进行分页)制作的?
答案 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);
...