Reputation:
I am trying to show data from my server side (database) in a CellTable. I am using the AsyncDataProvider dataProvider = new AsyncDataProvider
code block method to fetch the data. I add the method new Timer()
to simulate a display, when I add this method my code does not return data, the web page shows the headed columns but shows no data.
If I remove the new timer()
method the code runs. I am new to GWT and find the documentation quite confusing trying to bring data from a database from the server. Most the documentation online is accessing local data it seems.
This works:
AsyncDataProvider<ServersDto> dataProvider = new AsyncDataProvider<ServersDto>() {
@Override
protected void onRangeChanged(HasData<ServersDto> display) {
final com.google.gwt.view.client.Range range = display.getVisibleRange();
final ColumnSortList sortList = table.getColumnSortList();
ServerServiceAsync.INSTANCE.getServers(new AsyncCallback<List<ServersDto>>() {
@Override
public void onSuccess(List<ServersDto> result) {
display.setRowCount(result.size());
display.setRowData(0, result);
}
This below code with the 'new timer()' method does not run, it displays a page with the table headers but no data on display:
AsyncDataProvider<ServersDto> dataProvider = new AsyncDataProvider<ServersDto>() {
@Override
protected void onRangeChanged(HasData<ServersDto> display) {
final com.google.gwt.view.client.Range range = display.getVisibleRange();
final ColumnSortList sortList = table.getColumnSortList();
ServerServiceAsync.INSTANCE.getServers(new AsyncCallback<List<ServersDto>>() {
@Override
public void onSuccess(List<ServersDto> result) {
display.setRowCount(result.size());
new com.google.gwt.user.client.Timer() {
@Override
public void run() {
int start = range.getStart();
int end = start + range.getLength();
java.util.Comparator<ServersDto> sort = new java.util.Comparator<ServersDto>() {
@Override
public int compare(ServersDto o1, ServersDto o2) {
if(o1 == o2) {
return 0;
}
int diff = -1;
if (o1 != null) {
diff = (o2 != null) ? o1.getName().compareTo(o2.getName()) : 1;
}
return sortList.get(0).isAscending() ? diff : -diff;
}
};
result.sort(sort);
List<ServersDto> dataInRanger = result.subList(start, end);
display.setRowData(start, dataInRanger);
}
}.schedule(100);
image of the failed outcome is below. I would expect to see all 4 columns below to have data from the server below each field:
Upvotes: 0
Views: 28