【发布时间】:2017-08-02 07:49:48
【问题描述】:
我正在使用 vaadin 8.1.0 网格。我需要将复选框插入为一列,也作为列标题。当我单击列标题中的复选框时,应选中所有列复选框。那工作正常。但问题是,如果我有 100 行,当我检查标题复选框时,只检查了一些列复选框,即只检查显示的行。当我向下滚动时,未选中剩余行复选框。这是我的代码:
List<Person> people = new ArrayList();
for (int i = 0; i < 1000; i++) {
people.add(i, new Person("Galileo Galilei", 1564));
}
CheckBox CheckBox1 = new CheckBox("All");
CheckBox1.setValue(false);
Grid<Person> grid = new Grid<>();
grid.setItems( people);
grid.addColumn(Person::getName).setCaption("Name");
grid.addColumn(Person::getYear).setCaption("Year of birth").setId("1");
grid.addComponentColumn(Person -> {
CheckBox chk=new CheckBox("Chk 2");
CheckBox1.addValueChangeListener(e->
chk.setValue(CheckBox1.getValue())
);
return chk;
}).setCaption("ch2").setId("CH2");
grid.getHeaderRow(0).getCell("CH2").setComponent( CheckBox1);
【问题讨论】:
-
如果在组件列中创建复选框后还执行
chk.setValue(CheckBox1.getValue())会发生什么(除了已经在值更改侦听器中执行此操作)? -
你试过 grid.setSelectionMode(SelectionMode.MULTI);而不是使用您自己的复选框。
-
是的,我尝试了 SelectionMode 但我的需求不同,我不需要选择行。