我的表有一个很大的查询,所以我想让用户在显示表数据之前过滤一些字段。
是否可以仅通过单击某个按钮使表格获取数据?实际上,当我加载视图时,表已经获取了数据,这是由PagedTable
或LazyBeanContainer
(我正在使用Lazy Container对我的表进行分页)制作的?
我的表有一个很大的查询,所以我想让用户在显示表数据之前过滤一些字段。
是否可以仅通过单击某个按钮使表格获取数据?实际上,当我加载视图时,表已经获取了数据,这是由PagedTable
或LazyBeanContainer
(我正在使用Lazy Container对我的表进行分页)制作的?
起初你可以初始化表格
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);
}
});
我的解决方案是在创建视图时设置生成的列:
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);
...