2014-04-04 23 views
1

我有兩個表,我想在第一個表中選擇適當的行時,我選擇第二個表中的行。我已經做到這一點如下當我在另一個使用GWT的表中單擊時,如何選擇一個數據網格中的行?

for (DataRow<Cell> row : formDataTable.getVisibleItems()) { 
      if (row.getIndex().equals(rowIndex.intValue())) { 
       formDataTable.getSelectionModel().setSelected(row, true); 
      } 
} 

但我沒有看到它作爲視覺選定的行。我從第二張表中看到選定的行,但我應該首先看到它。

回答

1

它通過setSelected完成。

  1. 請確保您爲您的dataGrid使用正確的selectionModel
  2. 使用dataGrid

setSelected方法如果你想有機會選擇其他頁面上的行,你應該使用ProvidesKey和manualy設置必要的頁面

我下面

// variables 
@UiField 
DataGrid<DataRow<Cell>> formDataTable; 

public static final ProvidesKey<DataRow<Cell>> KEY_PROVIDER = new ProvidesKey<DataRow<Cell>>() { 
    @Override 
    public Object getKey(DataRow<Cell> item) { 
     return item.getIndex(); 
    } 
}; 

private SingleSelectionModel<DataRow<Cell>> selectionModel; 


// this code must be within constructor 
selectionModel = new SingleSelectionModel<DataRow<Cell>>(KEY_PROVIDER); 
formDataTable.setSelectionModel(selectionModel); 

// method to select should view as 
@Override 
public void setFocus(final Long rowIndex) { 
    DataRow<Cell> row = new DataRow<Cell>(); 
    row.setIndex(rowIndex.intValue()); 
    selectionModel.setSelected(row, true); 

    // go to essential page 
    Long page = rowIndex/pager.getPageSize() + (rowIndex % pager.getPageSize() > 0 ? 1:0); 
    pager.setPage(page.intValue() - 1); 
} 
+0

代碼是這樣的回答?如果沒有,請[編輯](http://stackoverflow.com/posts/22858014/edit)你的問題,在那裏添加,然後請刪除這篇文章。 – Baz

+0

我編輯過,現在是答案 – kraken

相關問題