在Vaadin 7.5.3的Grid小部件中,我們可以通過調用SelectionEvent::getSelected
或Grid::getSelectedRows
來確定當前的行選擇。以編程方式在Vaadin 7的Grid中選擇一行?
那麼我們如何以編程方式設置的選擇?
在Vaadin 7.5.3的Grid小部件中,我們可以通過調用SelectionEvent::getSelected
或Grid::getSelectedRows
來確定當前的行選擇。以編程方式在Vaadin 7的Grid中選擇一行?
那麼我們如何以編程方式設置的選擇?
Vaadin之書提到的setter方法Grid::setSelectedRows
吸氣劑一起。
當前選定的行可以使用setSelectedRows()通過項目ID集合進行設置,並使用getSelectedRows()進行讀取。
但是,Grid
類doc沒有列出該方法。 NetBeans 8.0.2在其自動完成中也不提示該方法。
所以顯然是一個錯誤。見票#18,580。
儘管Grid class的官方文檔沒有聲明這種方法,但您仍然可以通過編程的方式進行操作。我不會爭論這是否是一個錯誤。首先你需要知道你的SelectionMode
。 (在我的情況7.5.6)有select(Object)
方法直接在Grid
interface
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
Customer c = new Customer(1);
container = new BeanItemContainer<>(Customer.class, Arrays.asList(c, new Customer(2)));
grid = new Grid(container);
grid.setSelectionMode(SelectionMode.SINGLE);
SingleSelectionModel m = (SingleSelectionModel) grid.getSelectionModel();
m.select(c);
layout.addComponents(grid);
setContent(layout);
}
在較新的Vaadin:然後你就可以選擇行(或列)。
實施例:
Grid grid = new Grid(container);
grid.setSelectionMode(Grid.SelectionMode.SINGLE);
grid.select(row);
的row
對象例如可從SelectionListener
事件採取或從添加的對象之前(如在@kukis回答)。
您是否檢查過setSelectedRows()是否可用,如書中所述? https://vaadin.com/book/vaadin7/-/page/components.grid.html – muenzpraeger
@muenzpraeger Nope,在[Grid class doc]中沒有「setSelectedRows」(https://vaadin.com/api/com/) vaadin/UI/Grid.html)。它也不出現在我的NetBeans自動完成中。感謝在Vaadin書中提到這一點。我提交了一個錯誤報告,Ticket#[18,580](https://dev.vaadin.com/ticket/18580)。 –