【问题标题】:Vaadin Table: load data only on click of buttonVaadin Table:仅在单击按钮时加载数据
【发布时间】:2013-06-13 11:45:17
【问题描述】:

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

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

【问题讨论】:

  • @quinxorin 你认识 Vaadin 吗?
  • 不,很遗憾我没有。等等,爪哇!不是javascript。糟糕,误读了标签。
  • 在加载视图时添加Button.ClickListener而不是加载数据

标签: java lazy-loading vaadin


【解决方案1】:

一开始你可以只初始化表格

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);
            }
        });

【讨论】:

    【解决方案2】:

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

    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);
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      相关资源
      最近更新 更多