X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6a7e4474cba9d8be4b2ec445e10f1691f7277c50..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/docs/source/Load.html diff --git a/docs/source/Load.html b/docs/source/Load.html new file mode 100644 index 00000000..0925b7bf --- /dev/null +++ b/docs/source/Load.html @@ -0,0 +1,116 @@ +
\ No newline at end of file/** + * @class Ext.form.action.Load + * @extends Ext.form.action.Action + * <p>A class which handles loading of data from a server into the Fields of an {@link Ext.form.Basic}.</p> + * <p>Instances of this class are only created by a {@link Ext.form.Basic Form} when + * {@link Ext.form.Basic#load load}ing.</p> + * <p><u><b>Response Packet Criteria</b></u></p> + * <p>A response packet <b>must</b> contain: + * <div class="mdetail-params"><ul> + * <li><b><code>success</code></b> property : Boolean</li> + * <li><b><code>data</code></b> property : Object</li> + * <div class="sub-desc">The <code>data</code> property contains the values of Fields to load. + * The individual value object for each Field is passed to the Field's + * {@link Ext.form.field.Field#setValue setValue} method.</div></li> + * </ul></div> + * <p><u><b>JSON Packets</b></u></p> + * <p>By default, response packets are assumed to be JSON, so for the following form load call:<pre><code> +var myFormPanel = new Ext.form.Panel({ + title: 'Client and routing info', + items: [{ + fieldLabel: 'Client', + name: 'clientName' + }, { + fieldLabel: 'Port of loading', + name: 'portOfLoading' + }, { + fieldLabel: 'Port of discharge', + name: 'portOfDischarge' + }] +}); +myFormPanel.{@link Ext.form.Panel#getForm getForm}().{@link Ext.form.Basic#load load}({ + url: '/getRoutingInfo.php', + params: { + consignmentRef: myConsignmentRef + }, + failure: function(form, action) { + Ext.Msg.alert("Load failed", action.result.errorMessage); + } +}); +</code></pre> + * a <b>success response</b> packet may look like this:</p><pre><code> +{ + success: true, + data: { + clientName: "Fred. Olsen Lines", + portOfLoading: "FXT", + portOfDischarge: "OSL" + } +}</code></pre> + * while a <b>failure response</b> packet may look like this:</p><pre><code> +{ + success: false, + errorMessage: "Consignment reference not found" +}</code></pre> + * <p>Other data may be placed into the response for processing the {@link Ext.form.Basic Form}'s + * callback or event handler methods. The object decoded from this JSON is available in the + * {@link Ext.form.action.Action#result result} property.</p> + */ +Ext.define('Ext.form.action.Load', { + extend:'Ext.form.action.Action', + requires: ['Ext.data.Connection'], + alternateClassName: 'Ext.form.Action.Load', + alias: 'formaction.load', + + type: 'load', + + /** + * @private + */ + run: function() { + Ext.Ajax.request(Ext.apply( + this.createCallback(), + { + method: this.getMethod(), + url: this.getUrl(), + headers: this.headers, + params: this.getParams() + } + )); + }, + + /** + * @private + */ + onSuccess: function(response){ + var result = this.processResponse(response), + form = this.form; + if (result === true || !result.success || !result.data) { + this.failureType = Ext.form.action.Action.LOAD_FAILURE; + form.afterAction(this, false); + return; + } + form.clearInvalid(); + form.setValues(result.data); + form.afterAction(this, true); + }, + + /** + * @private + */ + handleResponse: function(response) { + var reader = this.form.reader, + rs, data; + if (reader) { + rs = reader.read(response); + data = rs.records && rs.records[0] ? rs.records[0].data : null; + return { + success : rs.success, + data : data + }; + } + return Ext.decode(response.responseText); + } +}); + +