javascript - Why Dojo grid.refresh is making another server call? -


we using dojo jsonrest. whenever need refresh grid new data, dojo firing 2 server calls.

below code.

var myjsonrest = declare(jsonrest, {    get: function(id, options) {        return this.inherited(            arguments,             [id, lang.mixin(this.headers, options)]);    } });  mydatastore = myjsonrest({     target: someurl,    headers: {        'moduleuname': somemodulename    },    idattribute: "id",        query: function(query, options) {           // other code                           }                     });  mydatastore.get("", { paramname: paramvalue }).then(function(result) { // fires request server   gridobj.refresh(); // fires same request 2nd time server   // if gridobj.refresh() commented out, grid not displayes new data. }); 

in order grid detect changes in store without triggering refresh, should wrap jsonrest store dojo.store.observable. updates store auto updated in grid.

mycachedatastore = new cache(mydatastore, new memory({}); myobservabledatastore = new observable(mycachedatastore)     

you should able pass myobservabledatastore in place of mydatastore.

to update or refresh grid can change target url or update headers in mydatastore directly , call grid.refresh. have not tested updating of headers, example changes target url

/rest/users/  

to

/rest/users/?username=jdoe  

and grid updates fine.

mydatastore.target = '/rest/users/?username=jdoe' 

or maybe

mydatastore.headers[paramname] = paramvalue 

since myjsonrest store mixin options provided "get" headers well.


Comments