SmartClient Version: v9.0p_2013-11-03/PowerEdition
Browsers: IE 8-10, Chrome 32, probably others
I have a ListGrid that fetches data from a DataSource based on user interaction with other components. Sometimes the user initiates another fetchData before the previous call to fetchData has completed. Whenever this happens the grid gets stuck in a "Loading Data" state.
There are no errors that occur on the server side and I can see the data coming back to the client just fine. The fetchData callback method for both fetchData requests also gets called without a problem. But the ListGrid never displays the rows. It just continues showing the "Loading Data" message.
You can duplicate this behavior by modifying the code in the example:
http://www.smartclient.com/#databoundFetch
Any suggestions on why this might be happening and the best way to prevent the grid from getting stuck in the "Data Loading" state?
Browsers: IE 8-10, Chrome 32, probably others
I have a ListGrid that fetches data from a DataSource based on user interaction with other components. Sometimes the user initiates another fetchData before the previous call to fetchData has completed. Whenever this happens the grid gets stuck in a "Loading Data" state.
There are no errors that occur on the server side and I can see the data coming back to the client just fine. The fetchData callback method for both fetchData requests also gets called without a problem. But the ListGrid never displays the rows. It just continues showing the "Loading Data" message.
You can duplicate this behavior by modifying the code in the example:
http://www.smartclient.com/#databoundFetch
Code:
isc.ListGrid.create({ ID: "countryList", width:500, height:224, alternateRecordStyles:true, dataSource: worldDS, // display a subset of fields from the datasource fields:[ {name:"countryCode"}, {name:"countryName"}, {name:"capital"}, {name:"continent"} ], sortFieldNum: 1, // sort by countryName dataPageSize: 50, drawAheadRatio: 4 }) isc.IButton.create({ left:1, top:240, width:160, title:"Fetch Double", click: function() { countryList.fetchData( {continent:'Europe'}, function(dsResponse, data, dsRequest){ isc.say('callback 1 '+dsRequest.clientContext.getDataSource().ID); }, {clientContext: countryList} ); setTimeout(function() { countryList.fetchData( {continent:'Africa'}, function(dsResponse, data, dsRequest){ isc.say('callback 2 '+dsRequest.clientContext.getDataSource().ID); }, {clientContext: countryList} ); }, 100); } })
Comment