gpt4 book ai didi

java - Vaadin 流多选组合框

转载 作者:行者123 更新时间:2023-11-30 01:56:27 26 4
gpt4 key购买 nike

我需要在网格标题行中显示多选组合框来过滤网格记录。

最佳答案

目前 Vaadin Flow 没有官方的多选组件。

但是,您可以使用 multiselect-combo-box 的 Java 集成Vaadin Flow 的网络组件。您可以看到该组件的现场演示here .

要使用该组件,首先将依赖项添加到您的 pom.xml 文件中(检查哪个是最新版本并进行相应修改):

    <dependency>
<groupId>org.vaadin.gatanaso</groupId>
<artifactId>multiselect-combo-box-flow</artifactId>
<version>0.0.4</version>
</dependency>

<repository>
<id>vaadin-addons</id>
<url>http://maven.vaadin.com/vaadin-addons</url>
</repository>

然后实例化组件并用项目填充它:

MultiselectComboBox<String> multiselectComboBox = new MultiselectComboBox();
multiselectComboBox.setLabel("Select items");
multiselectComboBox.setItems("Item 1", "Item 2", "Item 3", "Item 4");

可以选择添加值更改监听器,以便在选择更改时收到通知:

multiselectComboBox.addValueChangeListener(e -> {
// get the currently selected items
Set<String> selectedItems = multiselectComboBox.getValue();
});

要使用此组件作为网格过滤器,我修改了 Vaadin 网格 documentation 中的示例。 ,其工作原理如下:

// setup grid with data provider
List<Person> personList = getItems();
Grid<Person> grid = new Grid<>();

ListDataProvider<Person> dataProvider = new ListDataProvider<>(personList);
grid.setDataProvider(dataProvider);

// add a column
Grid.Column<Person> firstNameColumn = grid.addColumn(Person::getfirstName).setHeader("Name");

HeaderRow filterRow = grid.appendHeaderRow();

// define the multiselect combo box
MultiselectComboBox<String> multiselectComboBox = new MultiselectComboBox();

// set items to list of names
multiselectComboBox.setItems("Jack", "Nathan", "Andrew", "Peter", "Samuel");

// add a value change listener
multiselectComboBox.addValueChangeListener(e -> {
// get the currently selected items
Set<String> selectedItems = multiselectComboBox.getValue();
String names = selectedItems.stream().collect(Collectors.joining(","));

// filter the grid data provider
if (selectedItems.size() > 0) {
dataProvider.addFilter(person -> StringUtils.containsIgnoreCase(person.getfirstName(), names));
} else {
dataProvider.clearFilters();
}
});

// set the component as a filter
filterRow.getCell(firstNameColumn).setComponent(multiselectComboBox);

希望这可以帮助您实现目标!

BR,

戈兰

关于java - Vaadin 流多选组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54329167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com