2015-08-09 67 views
1

Vaadin 7.5.3的Grid小部件中,我們可以通過調用SelectionEvent::getSelectedGrid::getSelectedRows來確定當前的行選擇。以編程方式在Vaadin 7的Grid中選擇一行?

那麼我們如何以編程方式設置的選擇?

+0

您是否檢查過setSelectedRows()是否可用,如書中所述? https://vaadin.com/book/vaadin7/-/page/components.grid.html – muenzpraeger

+0

@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)。 –

回答

0

setter方法缺失(錯誤?)

Vaadin之書提到的setter方法Grid::setSelectedRows吸氣劑一起。

當前選定的行可以使用setSelectedRows()通過項目ID集合進行設置,並使用getSelectedRows()進行讀取。

但是,Grid類doc沒有列出該方法。 NetBeans 8.0.2在其自動完成中也不提示該方法。

所以顯然是一個錯誤。見票#18,580

4

儘管Grid class的官方文檔沒有聲明這種方法,但您仍然可以通過編程的方式進行操作。我不會爭論這是否是一個錯誤。首先你需要知道你的SelectionMode。 (在我的情況7.5.6)有select(Object)方法直接在Gridinterface

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

在較新的Vaadin:然後你就可以選擇行(或列)。

實施例:

Grid grid = new Grid(container); 
grid.setSelectionMode(Grid.SelectionMode.SINGLE); 
grid.select(row); 

row對象例如可從SelectionListener事件採取或從添加的對象之前(如在@kukis回答)。

相關問題