user24637246
user24637246

Reputation:

display my database data in my CellTable using AsyncDataProvider<> dataProvider = new AsyncDataProvider

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: outcome with no data

Upvotes: 0

Views: 28

Answers (0)

Related Questions