New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dgrid with async stores ?!? #109
Comments
working non-working demo is available here 17 rows in viewport slidebar should be about 1/5 of viewport height (17 / 79) thanks |
As I told you earlier on IRC, you need to be setting total on the immediate return of the results object. Setting it within the promise means it's not set immediately, which also means QueryResults is probably defaulting it to the length of the returned result set (which is only the length of the page - 25). Here's an expansion of what I was trying to tell you on IRC earlier:
|
I have uploaded dojo source to help wih trying to debug minified cdn code. |
@kfranqueiro the promise returned from xhr is frozen and so the right way to do this for @teslan is along these lines var dfd = new Deferred();
var results = = xhr("GET", {
url: this.target + (query || ""),
handleAs: "json",
headers: headers
});
Deferred.when(results, function (response) {
return response.rows;
}, dfd.reject);
dfd.total = Deferred.when(results, function (response) {
return response.total_rows;
});
return QueryResults(dfd); or use |
the var dfd = xhr("GET", {
url: this.target + (query || ""),
handleAs: "json",
headers: headers
});
// wrap the frozen promise so we can assign properties to the wrapper
var results = lang.delegate(dfd.then(function (response){
return response.rows;
}));
results.total = dfd.then(function(response){
return response.total_rows;
});
return QueryResults(results); |
opened dojo bug for JsonRest - http://bugs.dojotoolkit.org/ticket/14930 |
Relevant code in original dojo/store/JsonRest.js looks like this:
I tried all sorts of variations of this:
In the origial, results are returned as is and in my case it is results.rows that need to be returned.
Now, as soon as I do that, results.total either does not end up being returned as "promised" or as I suspect dgrid is not using the promised value and is instead using either the results.length or worse the default value of 25.
While I am personally new to JS and much of web dev, half a dozen folks on #dojo have tried to help. Out of numerous tests that exist and as I was told work ;) I am still not able to identify any that work with async (xhr like) store.
I need to get this to work in original JsonRest.js + above changes - to see paging work with async stores. Then I need to replace xhr with io.script , for a stripped down JSONP version. But in all those cases results.child.array needs to be returned to dgrid, as well as an indication of how many records are available to the query, so that dgrid will know to call store.query for more data (I hope).
The text was updated successfully, but these errors were encountered: