当我使用GWT单击另一个表时,如何在一个数据网格中选择行?

时间:2014-04-04 08:56:48

标签: java gwt datagrid

我有两个表,当我在第二个表中选择行时,我想在第一个表中选择适当的行。我已完成以下操作

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

但我不认为它是视觉选择的行。我看到第二张表中的选定行,但我应该先看到它。

1 个答案:

答案 0 :(得分:1)

通过setSelected完成。

  1. 确保为您的dataGrid使用正确的selectionModel
  2. 使用setSelected
  3. dataGrid方法

    如果您希望有机会在其他网页上选择行,则应使用ProvidesKey并手动设置必要页面

    我的代码

    // 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);
    }