【问题标题】:Update a ListSelect in Vaadin 7在 Vaadin 7 中更新 ListSelect
【发布时间】:2017-11-16 07:00:23
【问题描述】:

单击一个按钮后,我需要更新 ListSelect 的列表,但我不知道如何

这是我的代码:

创建列表方法

private void createListPanel() {
        VerticalLayout listPanel = new VerticalLayout();
        listPanel.setWidth(100f, Unit.PERCENTAGE);

        queryList= new ListSelect("List Of Querys", getQueryList());
        queryList.setWidth(100f, Unit.PERCENTAGE);

        queryList.setNullSelectionAllowed(false);

        queryList.addValueChangeListener(event -> {

            selectedQuery = (String) (queryList.getValue());
            String retrievedQuery = repository.getRawQuery(selectedQuery);

        });

        listPanel.addComponent(queryList);
        panelSuperior.addComponent(listPanel);
    }

getQueryList()

private List<String> getQueryList() {
    return repository.getQueryNames();
}

创建按钮方法

private void CreateButton() {
    Button buttonRefresh= new Button("Refresh");

    buttonRefresh.addClickListener((Button.ClickEvent e) -> {
        // i tried this
        queryList.setContainerDataSource((Container) getQueryList());
    });

    buttonPanel.addComponent(button);

}

我在 CreateButton() 方法中尝试了这一行:

queryList.setContainerDataSource((Container) getQueryList())

但我得到了一个

java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.vaadin.data.Container

因为这个方法需要一个容器对象

我在 Vaadin javadoc 中搜索,但找不到设置或更新 ListSelect 列表的方法

Vaadin Javadoc: Vaadin Javadoc 7.7.9 ListSelect

提前致谢

【问题讨论】:

  • listaConsultasqueryList 是同一个东西吗? obtenerNombresListagetQueryList 的问题相同。
  • 是的,对不起,我在翻译时忘记更改这个名字,我用正确的名字编辑了我的答案

标签: java vaadin vaadin7


【解决方案1】:

直接的方法是从底层容器中删除所有项目,然后添加新项目:

Container container = queryList.getContainerDataSource();
container.removAllItems();
List<String> queries = getQueryList();
for(String query : queries) {
    container.addItem(query);
}

ListSelect(String caption, Collection&lt;?&gt; options) 构造函数创建一个IndexedContainer 并使用您的集合中的项目填充它。

另一种选择是将ListSelect 绑定到一个容器,这可能使其能够自动跟踪更改。有关这方面的更多信息,请参阅 Vaadin 文档中的 "Collecting Items in Containers" 主题。

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多