javascript - Saving the whole EditorGrid with a single Ajax request -
i save extjs (3.3.1) editorgrid single ajax request.
i've created editorgrid, based on arraystore.
var store = new ext.data.arraystore({ data: arraydata, fields: [ 'id', 'qty', 'idservice', 'idsubscription', 'description', 'vat', 'amount' ] }); [...] var grid = { xtype: 'editorgrid', store: store, view: gridview, colmodel: colmodel, selmodel: selmodel, striperows: true, tbar: tbar, autoheight: true, width: 872, clickstoedit: 1 };
i've created save button following handler:
app.inv.savebuttonhandler = function () { var myform = ext.getcmp("formheader").getform(); if (!myform.isvalid()) { ext.messagebox.alert('form not submitted', 'please complete form , try again.'); return; } myform.el.mask('please wait', 'x-mask-loading'); ext.ajax.request({ params: { idcustomer: myform.findfield("idcustomer").getvalue(), issuedate: myform.findfield("issuedate").getvalue(), documenttype: myform.findfield("documenttype").getvalue(), documentnumber: myform.findfield("documentnumber").getvalue() }, url: 'save-sales-document-action', method: 'post', success: function (response, request) { myform.el.unmask(); ext.messagebox.alert('success', 'returned: ' + response.responsetext); }, failure: function (response, request) { myform.el.unmask(); ext.messagebox.alert('failed', 'returned: ' + response.responsetext); } }); };
in other words, can send form elements simple value, don't know how send whole data grid. send whole data grid single ajax request.
i've used before cell-by-cell saving method, in case prefer save whole grid in 1 go. don't need server-side part, in java, client-side javascript.
can help? thanks!
after night sleep , still no answers, made further tries , can answer own question. leave question open anyway, in case knows better way.
to solve problem, added property "storeid: 'gridstore'" arraystore, locate store later ext.storemgr.lookup(), then, @ saving time, proceed re-build array record record in following way:
var griddata = new array(); ext.storemgr.lookup('gridstore').each(function (record) { griddata.push(record.data); });
the essential part don't whole record, data field of it.
after i've array data, easy part add params of ajax.request:
params: { ... griddata: ext.encode(griddata) },
this works. data encoded in single field. of course on server have decoded.
Comments
Post a Comment