Description
ListGrid displays a list of objects in a grid, where each row represents one object and each cell in the row represents one property.
...
For transparent loading of the data the fetchData method should be used.
Code Block |
---|
language | java |
---|
title | Update by DataSource |
---|
|
|
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