Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For transparent loading of the data the fetchData method should be used.

Code Block
languagejava
titleUpdate by DataSource
linenumberstrue
private void onRefresh() {
    DataSource dataSource = listGrid.getDataSource();
    Criteria criteria = listGrid.getCriteria();

    Integer[] visibleRows = listGrid.getVisibleRows();
    
	// request one page's worth of data on either side of the current viewport
    Integer startRow = visibleRows[0] - listGrid.getResultSet().getResultSize();
    Integer endRow = (visibleRows[1] + listGrid.getResultSet().getResultSize();
    if (startRow < 0) {
        startRow = 0;
    }
    
	DSRequest request = new DSRequest();
    request.setStartRow(startRow);
    request.setEndRow(endRow);
    request.setSortBy(listGrid.getSort());
    
 	dataSource.fetchData(criteria, new DSCallback() {
        @Override
        public void execute(DSResponse response, Object rawData, DSRequest request) {
            DataSource dataSource = listGrid.getDataSource(onRefreshed(response);
        }
    ResultSet resultSet = new ResultSet(dataSource}, request);
}

private void onRefreshed(DSResponse response) {
    
	DataSource dataSource = listGrid.getDataSource();
    ResultSet resultSet = new ResultSet(dataSource);
    resultSet.setInitialLength(response.getTotalRows());
    
	// correctly position the result in the resultset's cache 
    Record[] result = resultSet.setInitialData(response.getData());
    Record[] initialData =      resultSet.setInitialSort(listGrid.getSort())new Record[response.getTotalRows()];
    System.arraycopy(result, 0, initialData, response.getStartRow(), result.length);
    listGridresultSet.setDatasetInitialData(resultSetinitialData);
    
	resultSet.setInitialSort(listGrid.getSort());
   }
 resultSet.setCriteria(listGrid.getCriteria());
    }, requestlistGrid.setData(resultSet);
}

Attachments

Attachments