...
Code Block |
---|
title | Update by DataSource |
---|
|
final com.smartgwt.client.data.private void updateAll() {
DataSource dataSource = listGrid.getDataSource();
com.smartgwt.client.data.
Criteria criteria = listGrid.getCriteria();
dataSource.fetchData(criteria, createUpdateAllCallback());
}
|
Code Block |
---|
title | Handle server response |
---|
|
new com.smartgwt.client.data.private DSCallback createUpdateCallback() {
return new DSCallback() {
@Override
public void execute(com.smartgwt.client.data.DSResponse response, Object rawData, com.smartgwt.client.data.DSRequest request) {
com.smartgwt.client.data. DataSource dataSource = listGrid.getDataSource();
ResultSet resultSet = new com.smartgwt.client.data.ResultSet(dataSource);
resultSet.setInitialLength(response.getTotalRows());
resultSet.setInitialData(response.getData());
listGrid.setData(resultSet);
}
});
}
|
Transparent update range
For transparent loading the data range should be used DSRequest. It allows you to specify a range of data to load.
Code Block |
---|
title | Update by DataSource |
---|
|
final com.smartgwt.client.data.private void updateRange() {
DataSource dataSource = listGrid.getDataSource();
com.smartgwt.client.data.
Criteria criteria criteria = listGrid.getCriteria();
Integer[] visibleRows = listGrid.getVisibleRows();
Integer startRow = visibleRows[0];
Integer endRow = (visibleRows[1];
com.smartgwt.client.data.DSRequest request = new com.smartgwt.client.data.DSRequest();
int preloadSize = 10;
request.setStartRow(((startRow - preloadSize) < 0) ? 0 : (startRow - preloadSize));
request.setEndRow(endRow + preloadSize);
dataSource.fetchData(criteria, new com.smartgwt.client.data.DSCallback() {
@Override
public void execute(com.smartgwt.client.data.DSResponse response, Object rawData, com.smartgwt.client.data.DSRequest request) {
com.smartgwt.client.data.ResultSet resultSet = new com.smartgwt.client.data.ResultSet(dataSource + listGrid.getResultSet().getResultSize());
DSRequest request = new DSRequest();
resultSet.setInitialLength(response.getTotalRows())request.setStartRow(startRow);
com.smartgwt.client.data.Record[] records;
if (response.getStartRow() == 0) {
records = response.getData()request.setEndRow(endRow);
} else {
records = new com.smartgwt.client.data.Record[response.getTotalRows()];
System.arraycopy(response.getData(), 0, records, response.getStartRowdataSource.fetchData(criteria, createUpdateCallback(), response.getData().length);
}
resultSet.setInitialData(records);
listGrid.setData(resultSet);
}
}, request);
request);
}
|
Attachments