Upgrade to ExtJS 3.2.1 - Released 04/27/2010
[extjs.git] / docs / output / Ext.data.GroupingStore.html
index 25fbddc..d72cf8f 100644 (file)
@@ -1,6 +1,9 @@
-<div class="body-wrap" xmlns:ext="http://www.extjs.com"><div class="top-tools"><a class="inner-link" href="#Ext.data.GroupingStore-props"><img src="resources/images/default/s.gif" class="item-icon icon-prop">Properties</a>&#13;<a class="inner-link" href="#Ext.data.GroupingStore-methods"><img src="resources/images/default/s.gif" class="item-icon icon-method">Methods</a>&#13;<a class="inner-link" href="#Ext.data.GroupingStore-events"><img src="resources/images/default/s.gif" class="item-icon icon-event">Events</a>&#13;<a class="inner-link" href="#Ext.data.GroupingStore-configs"><img src="resources/images/default/s.gif" class="item-icon icon-config">Config Options</a>&#13;<a class="bookmark" href="../docs/?class=Ext.data.GroupingStore"><img src="resources/images/default/s.gif" class="item-icon icon-fav">Direct Link</a>&#13;</div><div class="inheritance res-block"><pre class="res-block-inner"><a href="output/Ext.util.Observable.html" ext:member="" ext:cls="Ext.util.Observable">Observable</a>&#13;&nbsp;&nbsp;<img src="resources/elbow-end.gif"><a href="output/Ext.data.Store.html" ext:member="" ext:cls="Ext.data.Store">Store</a>&#13;&nbsp;&nbsp;&nbsp;&nbsp;<img src="resources/elbow-end.gif">GroupingStore</pre></div><h1>Class <a href="source/GroupingStore.html#cls-Ext.data.GroupingStore">Ext.data.GroupingStore</a></h1><table cellspacing="0"><tr><td class="label">Package:</td><td class="hd-info">Ext.data</td></tr><tr><td class="label">Defined In:</td><td class="hd-info">GroupingStore.js</td></tr><tr><td class="label">Class:</td><td class="hd-info"><a href="source/GroupingStore.html#cls-Ext.data.GroupingStore">GroupingStore</a></td></tr><tr><td class="label">Extends:</td><td class="hd-info"><a href="output/Ext.data.Store.html" ext:cls="Ext.data.Store" ext:member="">Store</a></td></tr><tr><td class="label">xtype:</td><td class="hd-info">groupingstore</td></tr></table><div class="description">A specialized store implementation that provides for grouping records by one of the available fields. This\r
-is usually used in conjunction with an <a href="output/Ext.grid.GroupingView.html" ext:cls="Ext.grid.GroupingView">Ext.grid.GroupingView</a> to proved the data model for\r
-a grouped GridPanel.</div><div class="hr"></div><a id="Ext.data.GroupingStore-configs"></a><h2>Config Options</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Config Options</th><th class="msource-header">Defined By</th></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-autoDestroy"></a><b><a href="source/Store.html#cfg-Ext.data.Store-autoDestroy">autoDestroy</a></b> : Boolean<div class="mdesc"><div class="short">true to destroy the store when the component the store is bound
+<div class="body-wrap" xmlns:ext="http://www.extjs.com"><div class="top-tools"><a class="inner-link" href="#Ext.data.GroupingStore-props"><img src="../resources/images/default/s.gif" class="item-icon icon-prop">Properties</a>&#13;<a class="inner-link" href="#Ext.data.GroupingStore-methods"><img src="../resources/images/default/s.gif" class="item-icon icon-method">Methods</a>&#13;<a class="inner-link" href="#Ext.data.GroupingStore-events"><img src="../resources/images/default/s.gif" class="item-icon icon-event">Events</a>&#13;<a class="inner-link" href="#Ext.data.GroupingStore-configs"><img src="../resources/images/default/s.gif" class="item-icon icon-config">Config Options</a>&#13;<a class="bookmark" href="../docs/?class=Ext.data.GroupingStore"><img src="../resources/images/default/s.gif" class="item-icon icon-fav">Direct Link</a>&#13;</div><div class="inheritance res-block"><pre class="res-block-inner"><a href="output/Ext.util.Observable.html" ext:member="" ext:cls="Ext.util.Observable">Observable</a>&#13;&nbsp;&nbsp;<img src="resources/elbow-end.gif"><a href="output/Ext.data.Store.html" ext:member="" ext:cls="Ext.data.Store">Store</a>&#13;&nbsp;&nbsp;&nbsp;&nbsp;<img src="resources/elbow-end.gif">GroupingStore</pre></div><h1>Class <a href="source/GroupingStore.html#cls-Ext.data.GroupingStore">Ext.data.GroupingStore</a></h1><table cellspacing="0"><tr><td class="label">Package:</td><td class="hd-info">Ext.data</td></tr><tr><td class="label">Defined In:</td><td class="hd-info"><a href="source/GroupingStore.html#cls-Ext.data.GroupingStore">GroupingStore.js</a></td></tr><tr><td class="label">Class:</td><td class="hd-info"><a href="source/GroupingStore.html#cls-Ext.data.GroupingStore">GroupingStore</a></td></tr><tr><td class="label">Extends:</td><td class="hd-info"><a href="output/Ext.data.Store.html" ext:cls="Ext.data.Store" ext:member="">Store</a></td></tr></table><div class="description">A specialized store implementation that provides for grouping records by one of the available fields. This
+is usually used in conjunction with an <a href="output/Ext.grid.GroupingView.html" ext:cls="Ext.grid.GroupingView">Ext.grid.GroupingView</a> to provide the data model for
+a grouped GridPanel.
+Internally, GroupingStore is simply a normal Store with multi sorting enabled from the start. The grouping field
+and direction are always injected as the first sorter pair. GroupingView picks up on the configured groupField and
+builds grid rows appropriately.</div><div class="hr"></div><a id="Ext.data.GroupingStore-configs"></a><h2>Config Options</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Config Options</th><th class="msource-header">Defined By</th></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-autoDestroy"></a><b><a href="source/Store.html#cfg-Ext.data.Store-autoDestroy">autoDestroy</a></b> : Boolean<div class="mdesc"><div class="short">true to destroy the store when the component the store is bound
 to is destroyed (defaults to false).
 Note: this shoul...</div><div class="long"><tt>true</tt> to destroy the store when the component the store is bound
 to is destroyed (defaults to <tt>false</tt>).
@@ -31,8 +34,8 @@ to <tt>false</tt>.</p>
 generated for each record.</p></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#batch" ext:member="#batch" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="config-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-data"></a><b><a href="source/Store.html#cfg-Ext.data.Store-data">data</a></b> : Array<div class="mdesc">An inline data object readable by the <code><a href="output/Ext.data.Store.html#Ext.data.Store-reader" ext:member="reader" ext:cls="Ext.data.Store">reader</a></code>.
 Typically this option, or the <code><a href="output/Ext.data.Store.html#Ext.data.Store-url" ext:member="url" ext:cls="Ext.data.Store">url</a></code> option will be specified.</div></td><td class="msource"><a href="output/Ext.data.Store.html#data" ext:member="#data" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-defaultParamNames"></a><b><a href="source/Store.html#cfg-Ext.data.Store-defaultParamNames">defaultParamNames</a></b> : Object<div class="mdesc"><div class="short">Provides the default values for the paramNames property. To globally modify the parameters
 for all stores, this objec...</div><div class="long">Provides the default values for the <a href="output/Ext.data.Store.html#Ext.data.Store-paramNames" ext:member="paramNames" ext:cls="Ext.data.Store">paramNames</a> property. To globally modify the parameters
-for all stores, this object should be changed on the store prototype.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#defaultParamNames" ext:member="#defaultParamNames" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="config-row  "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-groupField"></a><b><a href="source/GroupingStore.html#cfg-Ext.data.GroupingStore-groupField">groupField</a></b> : String<div class="mdesc">The field name by which to sort the store's data (defaults to '').</div></td><td class="msource">GroupingStore</td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-groupOnSort"></a><b><a href="source/GroupingStore.html#cfg-Ext.data.GroupingStore-groupOnSort">groupOnSort</a></b> : Boolean<div class="mdesc"><div class="short">True to sort the data on the grouping field when a grouping operation occurs, false to sort based on the&#13;
-existing so...</div><div class="long">True to sort the data on the grouping field when a grouping operation occurs, false to sort based on the\r
+for all stores, this object should be changed on the store prototype.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#defaultParamNames" ext:member="#defaultParamNames" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="config-row  "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-groupField"></a><b><a href="source/GroupingStore.html#cfg-Ext.data.GroupingStore-groupField">groupField</a></b> : String<div class="mdesc">The field name by which to sort the store's data (defaults to '').</div></td><td class="msource">GroupingStore</td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-groupOnSort"></a><b><a href="source/GroupingStore.html#cfg-Ext.data.GroupingStore-groupOnSort">groupOnSort</a></b> : Boolean<div class="mdesc"><div class="short">True to sort the data on the grouping field when a grouping operation occurs, false to sort based on the
+existing sor...</div><div class="long">True to sort the data on the grouping field when a grouping operation occurs, false to sort based on the
 existing sort info (defaults to false).</div></div></td><td class="msource">GroupingStore</td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-listeners"></a><b><a href="source/Observable.html#cfg-Ext.util.Observable-listeners">listeners</a></b> : Object<div class="mdesc"><div class="short">A config object containing one or more event handlers to be added to this
 object during initialization.  This should ...</div><div class="long"><p>A config object containing one or more event handlers to be added to this
 object during initialization.  This should be a valid listeners config object as specified in the
@@ -108,9 +111,9 @@ the store is loaded or when a record is removed (defaults to <tt>false</tt>). Se
 for the accessor method to retrieve the modified records.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#pruneModifiedRecords" ext:member="#pruneModifiedRecords" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-reader"></a><b><a href="source/Store.html#cfg-Ext.data.Store-reader">reader</a></b> : Ext.data.DataReader<div class="mdesc"><div class="short">The Reader object which processes the
 data object and returns an Array of Ext.data.Record objects which are cached ke...</div><div class="long">The <a href="output/Ext.data.DataReader.html" ext:cls="Ext.data.DataReader">Reader</a> object which processes the
 data object and returns an Array of <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Ext.data.Record</a> objects which are cached keyed by their
-<b><tt><a href="output/Ext.data.Record.html#Ext.data.Record-id" ext:member="id" ext:cls="Ext.data.Record">id</a></tt></b> property.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#reader" ext:member="#reader" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-remoteGroup"></a><b><a href="source/GroupingStore.html#cfg-Ext.data.GroupingStore-remoteGroup">remoteGroup</a></b> : Boolean<div class="mdesc"><div class="short">True if the grouping should apply on the server side, false if it is local only (defaults to false).  If the&#13;
-groupin...</div><div class="long">True if the grouping should apply on the server side, false if it is local only (defaults to false).  If the\r
-grouping is local, it can be applied immediately to the data.  If it is remote, then it will simply act as a\r
+<b><tt><a href="output/Ext.data.Record.html#Ext.data.Record-id" ext:member="id" ext:cls="Ext.data.Record">id</a></tt></b> property.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#reader" ext:member="#reader" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-remoteGroup"></a><b><a href="source/GroupingStore.html#cfg-Ext.data.GroupingStore-remoteGroup">remoteGroup</a></b> : Boolean<div class="mdesc"><div class="short">True if the grouping should apply on the server side, false if it is local only (defaults to false).  If the
+grouping...</div><div class="long">True if the grouping should apply on the server side, false if it is local only (defaults to false).  If the
+grouping is local, it can be applied immediately to the data.  If it is remote, then it will simply act as a
 helper, automatically sending the grouping field name as the 'groupBy' param with each XHR call.</div></div></td><td class="msource">GroupingStore</td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-remoteSort"></a><b><a href="source/Store.html#cfg-Ext.data.Store-remoteSort">remoteSort</a></b> : boolean<div class="mdesc"><div class="short">true if sorting is to be handled by requesting the Proxy
 to provide a refreshed version of the data object in sorted ...</div><div class="long"><tt>true</tt> if sorting is to be handled by requesting the <tt><a href="output/Ext.data.Store.html#Ext.data.Store-proxy" ext:member="proxy" ext:cls="Ext.data.Store">Proxy</a></tt>
 to provide a refreshed version of the data object in sorted order, as opposed to sorting the Record cache
@@ -171,10 +174,13 @@ for a description of this property.
 To modify this property see setBasePar...</div><div class="long">See the <code><a href="output/Ext.data.Store.html#Ext.data.Store-baseParams" ext:member="baseParams" ext:cls="Ext.data.Store">corresponding configuration option</a></code>
 for a description of this property.
 To modify this property see <code><a href="output/Ext.data.Store.html#Ext.data.Store-setBaseParam" ext:member="setBaseParam" ext:cls="Ext.data.Store">setBaseParam</a></code>.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#baseParams" ext:member="#baseParams" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-fields"></a><b><a href="source/Store.html#prop-Ext.data.Store-fields">fields</a></b> : Ext.util.MixedCollection<div class="mdesc">A <a href="output/Ext.util.MixedCollection.html" ext:cls="Ext.util.MixedCollection">MixedCollection</a> containing the defined <a href="output/Ext.data.Field.html" ext:cls="Ext.data.Field">Field</a>s
-for the <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Records</a> stored in this Store. Read-only.</div></td><td class="msource"><a href="output/Ext.data.Store.html#fields" ext:member="#fields" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-lastOptions"></a><b><a href="source/Store.html#prop-Ext.data.Store-lastOptions">lastOptions</a></b> : Object<div class="mdesc"><div class="short">Contains the last options object used as the parameter to the load method. See load
+for the <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Records</a> stored in this Store. Read-only.</div></td><td class="msource"><a href="output/Ext.data.Store.html#fields" ext:member="#fields" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-hasMultiSort"></a><b><a href="source/Store.html#prop-Ext.data.Store-hasMultiSort">hasMultiSort</a></b> : Boolean
+True if this store is currently sorted by more than one field/direction combination.<div class="mdesc"></div></td><td class="msource"><a href="output/Ext.data.Store.html#hasMultiSort" ext:member="#hasMultiSort" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-isDestroyed"></a><b><a href="source/Store.html#prop-Ext.data.Store-isDestroyed">isDestroyed</a></b> : Boolean
+True if the store has been destroyed already. Read only<div class="mdesc"></div></td><td class="msource"><a href="output/Ext.data.Store.html#isDestroyed" ext:member="#isDestroyed" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-lastOptions"></a><b><a href="source/Store.html#prop-Ext.data.Store-lastOptions">lastOptions</a></b> : Object<div class="mdesc"><div class="short">Contains the last options object used as the parameter to the load method. See load
 for the details of what this may ...</div><div class="long">Contains the last options object used as the parameter to the <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> method. See <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a>
 for the details of what this may contain. This may be useful for accessing any params which were used
-to load the current Record cache.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#lastOptions" ext:member="#lastOptions" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-recordType"></a><b><a href="source/Store.html#prop-Ext.data.Store-recordType">recordType</a></b> : Function<div class="mdesc"><div class="short">The Record constructor as supplied to (or created by) the
+to load the current Record cache.</div></div></td><td class="msource"><a href="output/Ext.data.Store.html#lastOptions" ext:member="#lastOptions" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-multiSortInfo"></a><b><a href="source/Store.html#prop-Ext.data.Store-multiSortInfo">multiSortInfo</a></b> : Object
+Object containing overall sort direction and an ordered array of sorter configs used when sorting on multiple fields<div class="mdesc"></div></td><td class="msource"><a href="output/Ext.data.Store.html#multiSortInfo" ext:member="#multiSortInfo" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="property-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-recordType"></a><b><a href="source/Store.html#prop-Ext.data.Store-recordType">recordType</a></b> : Function<div class="mdesc"><div class="short">The Record constructor as supplied to (or created by) the
 Reader. Read-only.
 If the Reader was constructed by passing...</div><div class="long">The <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Record</a> constructor as supplied to (or created by) the
 <a href="output/Ext.data.DataReader.html" ext:cls="Ext.data.DataReader">Reader</a>. Read-only.
@@ -182,68 +188,70 @@ If the Reader was constructed by passing...</div><div class="long">The <a href="
 instead of a Record constructor, it will implicitly create a Record constructor from that Array (see
 <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Ext.data.Record</a>.<a href="output/Ext.data.Record.html#Ext.data.Record-create" ext:member="create" ext:cls="Ext.data.Record">create</a> for additional details).</p>
 <p>This property may be used to create new Records of the type held in this Store, for example:</p><pre><code><i>// create the data store</i>
-<b>var</b> store = <b>new</b> Ext.data.ArrayStore({
-    autoDestroy: true,
-    fields: [
-       {name: <em>'company'</em>},
-       {name: <em>'price'</em>, type: <em>'float'</em>},
-       {name: <em>'change'</em>, type: <em>'float'</em>},
-       {name: <em>'pctChange'</em>, type: <em>'float'</em>},
-       {name: <em>'lastChange'</em>, type: <em>'date'</em>, dateFormat: <em>'n/j h:ia'</em>}
-    ]
-});
-store.loadData(myData);
+    <b>var</b> store = <b>new</b> Ext.data.ArrayStore({
+        autoDestroy: true,
+        fields: [
+           {name: <em>'company'</em>},
+           {name: <em>'price'</em>, type: <em>'float'</em>},
+           {name: <em>'change'</em>, type: <em>'float'</em>},
+           {name: <em>'pctChange'</em>, type: <em>'float'</em>},
+           {name: <em>'lastChange'</em>, type: <em>'date'</em>, dateFormat: <em>'n/j h:ia'</em>}
+        ]
+    });
+    store.loadData(myData);
 
-<i>// create the Grid</i>
-<b>var</b> grid = <b>new</b> Ext.grid.EditorGridPanel({
-    store: store,
-    colModel: <b>new</b> Ext.grid.ColumnModel({
-        columns: [
-            {id:<em>'company'</em>, header: <em>'Company'</em>, width: 160, dataIndex: <em>'company'</em>},
-            {header: <em>'Price'</em>, renderer: <em>'usMoney'</em>, dataIndex: <em>'price'</em>},
-            {header: <em>'Change'</em>, renderer: change, dataIndex: <em>'change'</em>},
-            {header: <em>'% Change'</em>, renderer: pctChange, dataIndex: <em>'pctChange'</em>},
-            {header: <em>'Last Updated'</em>, width: 85,
-                renderer: Ext.util.Format.dateRenderer(<em>'m/d/Y'</em>),
-                dataIndex: <em>'lastChange'</em>}
-        ],
-        defaults: {
-            sortable: true,
-            width: 75
-        }
-    }),
-    autoExpandColumn: <em>'company'</em>, <i>// match the id specified <b>in</b> the column model</i>
-    height:350,
-    width:600,
-    title:<em>'Array Grid'</em>,
-    tbar: [{
-        text: <em>'Add Record'</em>,
-        handler : <b>function</b>(){
-            <b>var</b> defaultData = {
-                change: 0,
-                company: <em>'New Company'</em>,
-                lastChange: (<b>new</b> Date()).clearTime(),
-                pctChange: 0,
-                price: 10
-            };
-            <b>var</b> recId = 3; <i>// provide unique id</i>
-            <b>var</b> p = <b>new</b> store.recordType(defaultData, recId); <i>// create <b>new</b> record</i>
-            grid.stopEditing();
-            store.<a href="output/Ext.data.Store.html#Ext.data.Store-insert" ext:member="insert" ext:cls="Ext.data.Store">insert</a>(0, p); <i>// insert a <b>new</b> record into the store (also see <a href="output/Ext.data.Store.html#Ext.data.Store-add" ext:member="add" ext:cls="Ext.data.Store">add</a>)</i>
-            grid.startEditing(0, 0);
-        }
-    }]
-});</code></pre></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#recordType" ext:member="#recordType" ext:cls="Ext.data.Store">Store</a></td></tr></tbody></table><a id="Ext.data.GroupingStore-methods"></a><h2>Public Methods</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Method</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-GroupingStore"></a><b><a href="source/GroupingStore.html#cls-Ext.data.GroupingStore">GroupingStore</a></b>(&nbsp;<code>Object&nbsp;config</code>&nbsp;)
-    <div class="mdesc"><div class="short">Creates a new GroupingStore.</div><div class="long">Creates a new GroupingStore.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>config</code> : Object<div class="sub-desc">A config object containing the objects needed for the Store to access data,\r
-and read the data into Records.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div><table><tr><td class="label">xtype:</td><td class="hd-info">groupingstore</td></tr></table></div></div></td><td class="msource">GroupingStore</td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-add"></a><b><a href="source/Store.html#method-Ext.data.Store-add">add</a></b>(&nbsp;<code>Ext.data.Record[]&nbsp;records</code>&nbsp;)
+    <i>// create the Grid</i>
+    <b>var</b> grid = <b>new</b> Ext.grid.EditorGridPanel({
+        store: store,
+        colModel: <b>new</b> Ext.grid.ColumnModel({
+            columns: [
+                {id:<em>'company'</em>, header: <em>'Company'</em>, width: 160, dataIndex: <em>'company'</em>},
+                {header: <em>'Price'</em>, renderer: <em>'usMoney'</em>, dataIndex: <em>'price'</em>},
+                {header: <em>'Change'</em>, renderer: change, dataIndex: <em>'change'</em>},
+                {header: <em>'% Change'</em>, renderer: pctChange, dataIndex: <em>'pctChange'</em>},
+                {header: <em>'Last Updated'</em>, width: 85,
+                    renderer: Ext.util.Format.dateRenderer(<em>'m/d/Y'</em>),
+                    dataIndex: <em>'lastChange'</em>}
+            ],
+            defaults: {
+                sortable: true,
+                width: 75
+            }
+        }),
+        autoExpandColumn: <em>'company'</em>, <i>// match the id specified <b>in</b> the column model</i>
+        height:350,
+        width:600,
+        title:<em>'Array Grid'</em>,
+        tbar: [{
+            text: <em>'Add Record'</em>,
+            handler : <b>function</b>(){
+                <b>var</b> defaultData = {
+                    change: 0,
+                    company: <em>'New Company'</em>,
+                    lastChange: (<b>new</b> Date()).clearTime(),
+                    pctChange: 0,
+                    price: 10
+                };
+                <b>var</b> recId = 3; <i>// provide unique id</i>
+                <b>var</b> p = <b>new</b> store.recordType(defaultData, recId); <i>// create <b>new</b> record</i>
+                grid.stopEditing();
+                store.<a href="output/Ext.data.Store.html#Ext.data.Store-insert" ext:member="insert" ext:cls="Ext.data.Store">insert</a>(0, p); <i>// insert a <b>new</b> record into the store (also see <a href="output/Ext.data.Store.html#Ext.data.Store-add" ext:member="add" ext:cls="Ext.data.Store">add</a>)</i>
+                grid.startEditing(0, 0);
+            }
+        }]
+    });</code></pre></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#recordType" ext:member="#recordType" ext:cls="Ext.data.Store">Store</a></td></tr></tbody></table><a id="Ext.data.GroupingStore-methods"></a><h2>Public Methods</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Method</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-GroupingStore"></a><b><a href="source/GroupingStore.html#cls-Ext.data.GroupingStore">GroupingStore</a></b>(&nbsp;<code>Object&nbsp;config</code>&nbsp;)
+    <div class="mdesc"><div class="short">Creates a new GroupingStore.</div><div class="long">Creates a new GroupingStore.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>config</code> : Object<div class="sub-desc">A config object containing the objects needed for the Store to access data,
+and read the data into Records.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource">GroupingStore</td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-add"></a><b><a href="source/Store.html#method-Ext.data.Store-add">add</a></b>(&nbsp;<code>Ext.data.Record[]&nbsp;records</code>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Add Records to the Store and fires the add event.  To add Records
 to the store from a remote source use load({add:tru...</div><div class="long">Add Records to the Store and fires the <a href="output/Ext.data.Store.html#Ext.data.Store-add" ext:member="add" ext:cls="Ext.data.Store">add</a> event.  To add Records
 to the store from a remote source use <code><a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a>({add:true})</code>.
 See also <code><a href="output/Ext.data.Store.html#Ext.data.Store-recordType" ext:member="recordType" ext:cls="Ext.data.Store">recordType</a></code> and <code><a href="output/Ext.data.Store.html#Ext.data.Store-insert" ext:member="insert" ext:cls="Ext.data.Store">insert</a></code>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>records</code> : Ext.data.Record[]<div class="sub-desc">An Array of Ext.data.Record objects
-to add to the cache. See <a href="output/Ext.data.Store.html#Ext.data.Store-recordType" ext:member="recordType" ext:cls="Ext.data.Store">recordType</a>.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#add" ext:member="#add" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addEvents">addEvents</a></b>(&nbsp;<code>Object&nbsp;object</code>&nbsp;)
+to add to the cache. See <a href="output/Ext.data.Store.html#Ext.data.Store-recordType" ext:member="recordType" ext:cls="Ext.data.Store">recordType</a>.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#add" ext:member="#add" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addEvents">addEvents</a></b>(&nbsp;<code>Object|String&nbsp;o</code>,&nbsp;<code>string&nbsp;Optional.</code>&nbsp;)
     :
-                                        void<div class="mdesc"><div class="short">Used to define events on this Observable</div><div class="long">Used to define events on this Observable<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>object</code> : Object<div class="sub-desc">The object with the events defined</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addEvents" ext:member="#addEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addListener">addListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
+                                        void<div class="mdesc"><div class="short">Adds the specified events to the list of events which this Observable may fire.</div><div class="long">Adds the specified events to the list of events which this Observable may fire.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object|String<div class="sub-desc">Either an object with event names as properties with a value of <code>true</code>
+or the first event name string if multiple event names are being passed as separate parameters.</div></li><li><code>Optional.</code> : string<div class="sub-desc">Event name if multiple event names are being passed as separate parameters.
+Usage:<pre><code>this.addEvents(<em>'storeloaded'</em>, <em>'storecleared'</em>);</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addEvents" ext:member="#addEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addListener">addListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Appends an event handler to this object.</div><div class="long">Appends an event handler to this object.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to listen for.</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes.</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
 <b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.
@@ -264,8 +272,8 @@ Using the options argument, it is possible to combine different types of listene
 <br>
 A delayed, one-time listener.
 <pre><code>myDataView.on(<em>'click'</em>, this.onClick, this, {
-    single: true,
-    delay: 100
+single: true,
+delay: 100
 });</code></pre>
 <p>
 <b>Attaching multiple handlers in 1 call</b><br>
@@ -273,27 +281,27 @@ The method also allows for a single argument to be passed which is a config obje
 which specify multiple handlers.
 <p>
 <pre><code>myGridPanel.on({
-    <em>'click'</em> : {
-        fn: this.onClick,
-        scope: this,
-        delay: 100
-    },
-    <em>'mouseover'</em> : {
-        fn: this.onMouseOver,
-        scope: this
-    },
-    <em>'mouseout'</em> : {
-        fn: this.onMouseOut,
-        scope: this
-    }
+<em>'click'</em> : {
+    fn: this.onClick,
+    scope: this,
+    delay: 100
+},
+<em>'mouseover'</em> : {
+    fn: this.onMouseOver,
+    scope: this
+},
+<em>'mouseout'</em> : {
+    fn: this.onMouseOut,
+    scope: this
+}
 });</code></pre>
 <p>
 Or a shorthand syntax:<br>
 <pre><code>myGridPanel.on({
-    <em>'click'</em> : this.onClick,
-    <em>'mouseover'</em> : this.onMouseOver,
-    <em>'mouseout'</em> : this.onMouseOut,
    scope: this
+<em>'click'</em> : this.onClick,
+<em>'mouseover'</em> : this.onMouseOver,
+<em>'mouseout'</em> : this.onMouseOut,
+ scope: this
 });</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addListener" ext:member="#addListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-addSorted"></a><b><a href="source/Store.html#method-Ext.data.Store-addSorted">addSorted</a></b>(&nbsp;<code>Ext.data.Record&nbsp;record</code>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">(Local sort only) Inserts the passed Record into the Store at the index where it
@@ -315,12 +323,65 @@ Ext.data.Record.COMMIT.<div class="mdetail-params"><strong>Parameters:</strong><
                                         void<div class="mdesc"><div class="short">Destroys the store.</div><div class="long">Destroys the store.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#destroy" ext:member="#destroy" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-each"></a><b><a href="source/Store.html#method-Ext.data.Store-each">each</a></b>(&nbsp;<code>Function&nbsp;fn</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Calls the specified function for each of the Records in the cache.</div><div class="long">Calls the specified function for each of the <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Records</a> in the cache.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fn</code> : Function<div class="sub-desc">The function to call. The <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Record</a> is passed as the first parameter.
-Returning <tt>false</tt> aborts and exits the iteration.</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope in which to call the function (defaults to the <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Record</a>).</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#each" ext:member="#each" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-enableBubble"></a><b><a href="source/Observable-more.html#method-Ext.util.Observable-enableBubble">enableBubble</a></b>(&nbsp;<code>Object&nbsp;events</code>&nbsp;)
-    :
-                                        void<div class="mdesc"><div class="short">Used to enable bubbling of events</div><div class="long">Used to enable bubbling of events<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>events</code> : Object<div class="sub-desc"></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#enableBubble" ext:member="#enableBubble" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-filter"></a><b><a href="source/Store.html#method-Ext.data.Store-filter">filter</a></b>(&nbsp;<code>String&nbsp;field</code>,&nbsp;<code>String/RegExp&nbsp;value</code>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;anyMatch</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;caseSensitive</code>]</span>&nbsp;)
-    :
-                                        void<div class="mdesc"><div class="short">Filter the records by a specified property.</div><div class="long">Filter the <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">records</a> by a specified property.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>field</code> : String<div class="sub-desc">A field on your records</div></li><li><code>value</code> : String/RegExp<div class="sub-desc">Either a string that the field should begin with, or a RegExp to test
-against the field.</div></li><li><code>anyMatch</code> : Boolean<div class="sub-desc">(optional) <tt>true</tt> to match any part not just the beginning</div></li><li><code>caseSensitive</code> : Boolean<div class="sub-desc">(optional) <tt>true</tt> for case sensitive comparison</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#filter" ext:member="#filter" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-filterBy"></a><b><a href="source/Store.html#method-Ext.data.Store-filterBy">filterBy</a></b>(&nbsp;<code>Function&nbsp;fn</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
+Returning <tt>false</tt> aborts and exits the iteration.</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code>this</code> reference) in which the function is executed.
+Defaults to the current <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">Record</a> in the iteration.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#each" ext:member="#each" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-enableBubble"></a><b><a href="source/Observable-more.html#method-Ext.util.Observable-enableBubble">enableBubble</a></b>(&nbsp;<code>String/Array&nbsp;events</code>&nbsp;)
+    :
+                                        void<div class="mdesc"><div class="short">Enables events fired by this Observable to bubble up an owner hierarchy by calling
+this.getBubbleTarget() if present....</div><div class="long"><p>Enables events fired by this Observable to bubble up an owner hierarchy by calling
+<code>this.getBubbleTarget()</code> if present. There is no implementation in the Observable base class.</p>
+<p>This is commonly used by Ext.Components to bubble events to owner Containers. See <a href="output/Ext.Component.getBubbleTarget.html" ext:cls="Ext.Component.getBubbleTarget">Ext.Component.getBubbleTarget</a>. The default
+implementation in Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to
+access the required target more quickly.</p>
+<p>Example:</p><pre><code>Ext.override(Ext.form.Field, {
+    <i>//  Add functionality to Field&#39;s initComponent to enable the change event to bubble</i>
+    initComponent : Ext.form.Field.prototype.initComponent.createSequence(<b>function</b>() {
+        this.enableBubble(<em>'change'</em>);
+    }),
+
+    <i>//  We know that we want Field&#39;s events to bubble directly to the FormPanel.</i>
+    getBubbleTarget : <b>function</b>() {
+        <b>if</b> (!this.formPanel) {
+            this.formPanel = this.findParentByType(<em>'form'</em>);
+        }
+        <b>return</b> this.formPanel;
+    }
+});
+
+<b>var</b> myForm = <b>new</b> Ext.formPanel({
+    title: <em>'User Details'</em>,
+    items: [{
+        ...
+    }],
+    listeners: {
+        change: <b>function</b>() {
+            <i>// Title goes red <b>if</b> form has been modified.</i>
+            myForm.header.setStyle(<em>'color'</em>, <em>'red'</em>);
+        }
+    }
+});</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>events</code> : String/Array<div class="sub-desc">The event name to bubble, or an Array of event names.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#enableBubble" ext:member="#enableBubble" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-filter"></a><b><a href="source/Store.html#method-Ext.data.Store-filter">filter</a></b>(&nbsp;<code>String|Array&nbsp;field</code>,&nbsp;<code>String/RegExp&nbsp;value</code>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;anyMatch</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;caseSensitive</code>]</span>,&nbsp;<code>Boolean&nbsp;exactMatch</code>&nbsp;)
+    :
+                                        void<div class="mdesc"><div class="short">Filter the records by a specified property. Alternatively, pass an array of filter
+options to filter by more than one...</div><div class="long">Filter the <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">records</a> by a specified property. Alternatively, pass an array of filter
+options to filter by more than one property.
+Single filter example:
+store.filter('name', 'Ed', true, true); //finds all records containing the substring 'Ed'
+Multiple filter example:
+<pre><code>store.filter([
+{
+property     : <em>'name'</em>,
+value        : <em>'Ed'</em>,
+anyMatch     : true, <i>//optional, defaults to true</i>
+caseSensitive: true  <i>//optional, defaults to true</i>
+},
+<i>//filter functions can also be passed</i>
+{
+fn   : <b>function</b>(record) {
+<b>return</b> record.get(<em>'age'</em>) == 24
+},
+scope: this
+}
+]);</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>field</code> : String|Array<div class="sub-desc">A field on your records, or an array containing multiple filter options</div></li><li><code>value</code> : String/RegExp<div class="sub-desc">Either a string that the field should begin with, or a RegExp to test
+against the field.</div></li><li><code>anyMatch</code> : Boolean<div class="sub-desc">(optional) <tt>true</tt> to match any part not just the beginning</div></li><li><code>caseSensitive</code> : Boolean<div class="sub-desc">(optional) <tt>true</tt> for case sensitive comparison</div></li><li><code>exactMatch</code> : Boolean<div class="sub-desc">True to force exact match (^ and $ characters added to the regex). Defaults to false. Ignored if anyMatch is true.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#filter" ext:member="#filter" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-filterBy"></a><b><a href="source/Store.html#method-Ext.data.Store-filterBy">filterBy</a></b>(&nbsp;<code>Function&nbsp;fn</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Filter by a function. The specified function will be called for each
 Record in this Store. If the function returns tr...</div><div class="long">Filter by a function. The specified function will be called for each
@@ -329,10 +390,10 @@ otherwise it is filtered out.<div class="mdetail-params"><strong>Parameters:</st
 <li><b>record</b> : Ext.data.Record<p class="sub-desc">The <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">record</a>
 to test for filtering. Access field values using <a href="output/Ext.data.Record.html#Ext.data.Record-get" ext:member="get" ext:cls="Ext.data.Record">Ext.data.Record.get</a>.</p></li>
 <li><b>id</b> : Object<p class="sub-desc">The ID of the Record passed.</p></li>
-</ul></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope of the function (defaults to this)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#filterBy" ext:member="#filterBy" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-find"></a><b><a href="source/Store.html#method-Ext.data.Store-find">find</a></b>(&nbsp;<code>String&nbsp;property</code>,&nbsp;<code>String/RegExp&nbsp;value</code>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;startIndex</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;anyMatch</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;caseSensitive</code>]</span>&nbsp;)
+</ul></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code>this</code> reference) in which the function is executed. Defaults to this Store.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#filterBy" ext:member="#filterBy" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-find"></a><b><a href="source/Store.html#method-Ext.data.Store-find">find</a></b>(&nbsp;<code>String&nbsp;fieldName</code>,&nbsp;<code>String/RegExp&nbsp;value</code>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;startIndex</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;anyMatch</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;caseSensitive</code>]</span>&nbsp;)
     :
-                                        Number<div class="mdesc"><div class="short">Finds the index of the first matching record in this store by a specific property/value.</div><div class="long">Finds the index of the first matching record in this store by a specific property/value.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>property</code> : String<div class="sub-desc">A property on your objects</div></li><li><code>value</code> : String/RegExp<div class="sub-desc">Either a string that the property value
-should begin with, or a RegExp to test against the property.</div></li><li><code>startIndex</code> : Number<div class="sub-desc">(optional) The index to start searching at</div></li><li><code>anyMatch</code> : Boolean<div class="sub-desc">(optional) True to match any part of the string, not just the beginning</div></li><li><code>caseSensitive</code> : Boolean<div class="sub-desc">(optional) True for case sensitive comparison</div></li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">The matched index or -1</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#find" ext:member="#find" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-findBy"></a><b><a href="source/Store.html#method-Ext.data.Store-findBy">findBy</a></b>(&nbsp;<code>Function&nbsp;fn</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;startIndex</code>]</span>&nbsp;)
+                                        Number<div class="mdesc"><div class="short">Finds the index of the first matching Record in this store by a specific field value.</div><div class="long">Finds the index of the first matching Record in this store by a specific field value.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fieldName</code> : String<div class="sub-desc">The name of the Record field to test.</div></li><li><code>value</code> : String/RegExp<div class="sub-desc">Either a string that the field value
+should begin with, or a RegExp to test against the field.</div></li><li><code>startIndex</code> : Number<div class="sub-desc">(optional) The index to start searching at</div></li><li><code>anyMatch</code> : Boolean<div class="sub-desc">(optional) True to match any part of the string, not just the beginning</div></li><li><code>caseSensitive</code> : Boolean<div class="sub-desc">(optional) True for case sensitive comparison</div></li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">The matched index or -1</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#find" ext:member="#find" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-findBy"></a><b><a href="source/Store.html#method-Ext.data.Store-findBy">findBy</a></b>(&nbsp;<code>Function&nbsp;fn</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;startIndex</code>]</span>&nbsp;)
     :
                                         Number<div class="mdesc"><div class="short">Find the index of the first matching Record in this Store by a function.
 If the function returns true it is considere...</div><div class="long">Find the index of the first matching Record in this Store by a function.
@@ -340,9 +401,9 @@ If the function returns <tt>true</tt> it is considered a match.<div class="mdeta
 <li><b>record</b> : Ext.data.Record<p class="sub-desc">The <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">record</a>
 to test for filtering. Access field values using <a href="output/Ext.data.Record.html#Ext.data.Record-get" ext:member="get" ext:cls="Ext.data.Record">Ext.data.Record.get</a>.</p></li>
 <li><b>id</b> : Object<p class="sub-desc">The ID of the Record passed.</p></li>
-</ul></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope of the function (defaults to this)</div></li><li><code>startIndex</code> : Number<div class="sub-desc">(optional) The index to start searching at</div></li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">The matched index or -1</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#findBy" ext:member="#findBy" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-findExact"></a><b><a href="source/Store.html#method-Ext.data.Store-findExact">findExact</a></b>(&nbsp;<code>String&nbsp;property</code>,&nbsp;<code>String/RegExp&nbsp;value</code>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;startIndex</code>]</span>&nbsp;)
+</ul></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code>this</code> reference) in which the function is executed. Defaults to this Store.</div></li><li><code>startIndex</code> : Number<div class="sub-desc">(optional) The index to start searching at</div></li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">The matched index or -1</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#findBy" ext:member="#findBy" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-findExact"></a><b><a href="source/Store.html#method-Ext.data.Store-findExact">findExact</a></b>(&nbsp;<code>String&nbsp;fieldName</code>,&nbsp;<code>Mixed&nbsp;value</code>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;startIndex</code>]</span>&nbsp;)
     :
-                                        Number<div class="mdesc"><div class="short">Finds the index of the first matching record in this store by a specific property/value.</div><div class="long">Finds the index of the first matching record in this store by a specific property/value.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>property</code> : String<div class="sub-desc">A property on your objects</div></li><li><code>value</code> : String/RegExp<div class="sub-desc">The value to match against</div></li><li><code>startIndex</code> : Number<div class="sub-desc">(optional) The index to start searching at</div></li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">The matched index or -1</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#findExact" ext:member="#findExact" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-fireEvent"></a><b><a href="source/Observable.html#method-Ext.util.Observable-fireEvent">fireEvent</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Object...&nbsp;args</code>&nbsp;)
+                                        Number<div class="mdesc"><div class="short">Finds the index of the first matching Record in this store by a specific field value.</div><div class="long">Finds the index of the first matching Record in this store by a specific field value.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fieldName</code> : String<div class="sub-desc">The name of the Record field to test.</div></li><li><code>value</code> : Mixed<div class="sub-desc">The value to match the field against.</div></li><li><code>startIndex</code> : Number<div class="sub-desc">(optional) The index to start searching at</div></li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">The matched index or -1</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#findExact" ext:member="#findExact" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-fireEvent"></a><b><a href="source/Observable.html#method-Ext.util.Observable-fireEvent">fireEvent</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Object...&nbsp;args</code>&nbsp;)
     :
                                         Boolean<div class="mdesc"><div class="short">Fires the specified event with the passed parameters (minus the event name).
 An event may be set to bubble up an Obse...</div><div class="long"><p>Fires the specified event with the passed parameters (minus the event name).</p>
@@ -385,7 +446,7 @@ must contain the dataset size. For remote data sources, the value for this prope
 by the Proxy.
 &lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: this value is not updated when changing the contents of the Store locally.&lt;/p&gt;</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#getTotalCount" ext:member="#getTotalCount" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-groupBy"></a><b><a href="source/GroupingStore.html#method-Ext.data.GroupingStore-groupBy">groupBy</a></b>(&nbsp;<code>String&nbsp;field</code>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;forceRegroup</code>]</span>&nbsp;)
     :
-                                        void<div class="mdesc"><div class="short">Groups the data by the specified field.</div><div class="long">Groups the data by the specified field.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>field</code> : String<div class="sub-desc">The field name by which to sort the store's data</div></li><li><code>forceRegroup</code> : Boolean<div class="sub-desc">(optional) True to force the group to be refreshed even if the field passed\r
+                                        void<div class="mdesc"><div class="short">Groups the data by the specified field.</div><div class="long">Groups the data by the specified field.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>field</code> : String<div class="sub-desc">The field name by which to sort the store's data</div></li><li><code>forceRegroup</code> : Boolean<div class="sub-desc">(optional) True to force the group to be refreshed even if the field passed
 in is the same as the current grouping field, false to skip grouping on the same field (defaults to false)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource">GroupingStore</td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-hasListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-hasListener">hasListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>&nbsp;)
     :
                                         Boolean<div class="mdesc"><div class="short">Checks to see if this object has any listeners for a specified event</div><div class="long">Checks to see if this object has any listeners for a specified event<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to check for</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">True if the event is being listened for, else false</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#hasListener" ext:member="#hasListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-indexOf"></a><b><a href="source/Store.html#method-Ext.data.Store-indexOf">indexOf</a></b>(&nbsp;<code>Ext.data.Record&nbsp;record</code>&nbsp;)
@@ -418,14 +479,14 @@ will be automatically included with the posted parameters according to the speci
 parameters to a remote data source. <b>Note</b>: <code>params</code> will override any
 <code><a href="output/Ext.data.Store.html#Ext.data.Store-baseParams" ext:member="baseParams" ext:cls="Ext.data.Store">baseParams</a></code> of the same name.</p>
 <p>Parameters are encoded as standard HTTP parameters using <a href="output/Ext.html#Ext-urlEncode" ext:member="urlEncode" ext:cls="Ext">Ext.urlEncode</a>.</p></div></li>
-<li><b><tt>callback</tt></b> : Function<div class="sub-desc"><p>A function to be called after the Records
-have been loaded. The <tt>callback</tt> is called after the load event and is passed the following arguments:<ul>
-<li><tt>r</tt> : Ext.data.Record[]</li>
-<li><tt>options</tt>: Options object from the load call</li>
-<li><tt>success</tt>: Boolean success indicator</li></ul></p></div></li>
-<li><b><tt>scope</tt></b> : Object<div class="sub-desc"><p>Scope with which to call the callback (defaults
+<li><b>callback</b> : Function<div class="sub-desc"><p>A function to be called after the Records
+have been loaded. The callback is called after the load event is fired, and is passed the following arguments:<ul>
+<li>r : Ext.data.Record[] An Array of Records loaded.</li>
+<li>options : Options object from the load call.</li>
+<li>success : Boolean success indicator.</li></ul></p></div></li>
+<li><b>scope</b> : Object<div class="sub-desc"><p>Scope with which to call the callback (defaults
 to the Store object)</p></div></li>
-<li><b><tt>add</tt></b> : Boolean<div class="sub-desc"><p>Indicator to append loaded records rather than
+<li><b>add</b> : Boolean<div class="sub-desc"><p>Indicator to append loaded records rather than
 replace the current cache.  <b>Note</b>: see note for <tt><a href="output/Ext.data.Store.html#Ext.data.Store-loadData" ext:member="loadData" ext:cls="Ext.data.Store">loadData</a></tt></p></div></li>
 </ul></div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">If the &lt;i&gt;developer&lt;/i&gt; provided &lt;tt&gt;{@link #beforeload}&lt;/tt&gt; event handler returns
 &lt;tt&gt;false&lt;/tt&gt;, the load call will abort and will return &lt;tt&gt;false&lt;/tt&gt;; otherwise will return &lt;tt&gt;true&lt;/tt&gt;.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#load" ext:member="#load" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-loadData"></a><b><a href="source/Store.html#method-Ext.data.Store-loadData">loadData</a></b>(&nbsp;<code>Object&nbsp;data</code>,&nbsp;<span title="Optional" class="optional">[<code>Boolean&nbsp;append</code>]</span>&nbsp;)
@@ -438,7 +499,13 @@ that <a href="output/Ext.data.Reader.html" ext:cls="Ext.data.Reader">Reader</a>'
 the existing cache.
 <b>Note</b>: that Records in a Store are keyed by their <a href="output/Ext.data.Record.html#Ext.data.Record-id" ext:member="id" ext:cls="Ext.data.Record">id</a>, so added Records
 with ids which are already present in the Store will <i>replace</i> existing Records. Only Records with
-new, unique ids will be added.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#loadData" ext:member="#loadData" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-on"></a><b><a href="source/Observable.html#method-Ext.util.Observable-on">on</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
+new, unique ids will be added.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#loadData" ext:member="#loadData" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-multiSort"></a><b><a href="source/Store.html#method-Ext.data.Store-multiSort">multiSort</a></b>(&nbsp;<code>Array&nbsp;sorters</code>,&nbsp;<code>String&nbsp;direction</code>&nbsp;)
+    :
+                                        void<div class="mdesc"><div class="short">Sorts the contents of this store by multiple field/direction sorters. This is called internally by sort
+and would not...</div><div class="long">Sorts the contents of this store by multiple field/direction sorters. This is called internally by <a href="output/sort.html" ext:cls="sort">sort</a>
+and would not usually be called manually.
+Multi sorting only currently applies to local datasets - multiple sort data is not currently sent to a proxy
+if remoteSort is used.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>sorters</code> : Array<div class="sub-desc">Array of sorter objects (field and direction)</div></li><li><code>direction</code> : String<div class="sub-desc">Overall direction to sort the ordered results by (defaults to "ASC")</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#multiSort" ext:member="#multiSort" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-on"></a><b><a href="source/Observable.html#method-Ext.util.Observable-on">on</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Appends an event handler to this object (shorthand for addListener.)</div><div class="long">Appends an event handler to this object (shorthand for <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a>.)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event to listen for</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
 <b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#on" ext:member="#on" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-purgeListeners"></a><b><a href="source/Observable.html#method-Ext.util.Observable-purgeListeners">purgeListeners</a></b>()
@@ -455,22 +522,30 @@ included in the results.<div class="mdetail-params"><strong>Parameters:</strong>
 <li><b>record</b> : Ext.data.Record<p class="sub-desc">The <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">record</a>
 to test for filtering. Access field values using <a href="output/Ext.data.Record.html#Ext.data.Record-get" ext:member="get" ext:cls="Ext.data.Record">Ext.data.Record.get</a>.</p></li>
 <li><b>id</b> : Object<p class="sub-desc">The ID of the Record passed.</p></li>
-</ul></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope of the function (defaults to this)</div></li></ul><strong>Returns:</strong><ul><li><code>MixedCollection</code><div class="sub-desc">Returns an Ext.util.MixedCollection of the matched records</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#queryBy" ext:member="#queryBy" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-rejectChanges"></a><b><a href="source/Store.html#method-Ext.data.Store-rejectChanges">rejectChanges</a></b>()
+</ul></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code>this</code> reference) in which the function is executed. Defaults to this Store.</div></li></ul><strong>Returns:</strong><ul><li><code>MixedCollection</code><div class="sub-desc">Returns an Ext.util.MixedCollection of the matched records</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#queryBy" ext:member="#queryBy" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-rejectChanges"></a><b><a href="source/Store.html#method-Ext.data.Store-rejectChanges">rejectChanges</a></b>()
     :
                                         void<div class="mdesc"><div class="short">Reject outstanding changes on all modified records.</div><div class="long"><a href="output/Ext.data.Record.html#Ext.data.Record-reject" ext:member="reject" ext:cls="Ext.data.Record">Reject</a> outstanding changes on all <a href="output/Ext.data.Store.html#Ext.data.Store-getModifiedRecords" ext:member="getModifiedRecords" ext:cls="Ext.data.Store">modified records</a>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#rejectChanges" ext:member="#rejectChanges" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-relayEvents"></a><b><a href="source/Observable-more.html#method-Ext.util.Observable-relayEvents">relayEvents</a></b>(&nbsp;<code>Object&nbsp;o</code>,&nbsp;<code>Array&nbsp;events</code>&nbsp;)
     :
-                                        void<div class="mdesc"><div class="short">Relays selected events from the specified Observable as if the events were fired by this.</div><div class="long">Relays selected events from the specified Observable as if the events were fired by <tt><b>this</b></tt>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object<div class="sub-desc">The Observable whose events this object is to relay.</div></li><li><code>events</code> : Array<div class="sub-desc">Array of event names to relay.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#relayEvents" ext:member="#relayEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-reload"></a><b><a href="source/Store.html#method-Ext.data.Store-reload">reload</a></b>(&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
-    :
-                                        void<div class="mdesc"><div class="short">Reloads the Record cache from the configured Proxy using the configured Reader and
-the options from the last load ope...</div><div class="long"><p>Reloads the Record cache from the configured Proxy using the configured <a href="output/Ext.data.Reader.html" ext:cls="Ext.data.Reader">Reader</a> and
-the options from the last load operation performed.</p>
-<p><b>Note</b>: see the Important note in <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a>.</p><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>options</code> : Object<div class="sub-desc">(optional) An <tt>Object</tt> containing <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">loading options</a> which may
-override the options used in the last <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> operation. See <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> for details (defaults to
-<tt>null</tt>, in which case the <a href="output/Ext.data.Store.html#Ext.data.Store-lastOptions" ext:member="lastOptions" ext:cls="Ext.data.Store">lastOptions</a> are used).</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#reload" ext:member="#reload" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-remove"></a><b><a href="source/Store.html#method-Ext.data.Store-remove">remove</a></b>(&nbsp;<code>Ext.data.Record&nbsp;record</code>&nbsp;)
+                                        void<div class="mdesc"><div class="short">Relays selected events from the specified Observable as if the events were fired by this.</div><div class="long">Relays selected events from the specified Observable as if the events were fired by <tt><b>this</b></tt>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object<div class="sub-desc">The Observable whose events this object is to relay.</div></li><li><code>events</code> : Array<div class="sub-desc">Array of event names to relay.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#relayEvents" ext:member="#relayEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-reload"></a><b><a href="source/Store.html#method-Ext.data.Store-reload">reload</a></b>(&nbsp;<code>Object&nbsp;options</code>&nbsp;)
+    :
+                                        void<div class="mdesc"><div class="short">Reloads the Record cache from the configured Proxy using the configured
+Reader and the options from the last load ope...</div><div class="long"><p>Reloads the Record cache from the configured Proxy using the configured
+<a href="output/Ext.data.Reader.html" ext:cls="Ext.data.Reader">Reader</a> and the options from the last load operation
+performed.</p>
+<p><b>Note</b>: see the Important note in <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a>.</p><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>options</code> : Object<div class="sub-desc"><p>(optional) An <tt>Object</tt> containing
+<a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">loading options</a> which may override the <a href="output/Ext.data.Store.html#Ext.data.Store-lastOptions" ext:member="lastOptions" ext:cls="Ext.data.Store">options</a>
+used in the last <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> operation. See <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> for details
+(defaults to <tt>null</tt>, in which case the <a href="output/Ext.data.Store.html#Ext.data.Store-lastOptions" ext:member="lastOptions" ext:cls="Ext.data.Store">lastOptions</a> are
+used).</p>
+<br><p>To add new params to the existing params:</p><pre><code>lastOptions = myStore.lastOptions;
+Ext.apply(lastOptions.params, {
+    myNewParam: true
+});
+myStore.reload(lastOptions);</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#reload" ext:member="#reload" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-remove"></a><b><a href="source/Store.html#method-Ext.data.Store-remove">remove</a></b>(&nbsp;<code>Ext.data.Record/Ext.data.Record[]&nbsp;record</code>&nbsp;)
     :
-                                        void<div class="mdesc"><div class="short">Remove a Record from the Store and fires the remove event.</div><div class="long">Remove a Record from the Store and fires the <a href="output/Ext.data.Store.html#Ext.data.Store-remove" ext:member="remove" ext:cls="Ext.data.Store">remove</a> event.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>record</code> : Ext.data.Record<div class="sub-desc">The Ext.data.Record object to remove from the cache.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#remove" ext:member="#remove" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-removeAll"></a><b><a href="source/Store.html#method-Ext.data.Store-removeAll">removeAll</a></b>()
+                                        void<div class="mdesc"><div class="short">Remove Records from the Store and fires the remove event.</div><div class="long">Remove Records from the Store and fires the <a href="output/Ext.data.Store.html#Ext.data.Store-remove" ext:member="remove" ext:cls="Ext.data.Store">remove</a> event.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>record</code> : Ext.data.Record/Ext.data.Record[]<div class="sub-desc">The record object or array of records to remove from the cache.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#remove" ext:member="#remove" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-removeAll"></a><b><a href="source/Store.html#method-Ext.data.Store-removeAll">removeAll</a></b>(&nbsp;<code>Boolean&nbsp;silent</code>&nbsp;)
     :
-                                        void<div class="mdesc"><div class="short">Remove all Records from the Store and fires the clear event.</div><div class="long">Remove all Records from the Store and fires the <a href="output/Ext.data.Store.html#Ext.data.Store-clear" ext:member="clear" ext:cls="Ext.data.Store">clear</a> event.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#removeAll" ext:member="#removeAll" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-removeAt"></a><b><a href="source/Store.html#method-Ext.data.Store-removeAt">removeAt</a></b>(&nbsp;<code>Number&nbsp;index</code>&nbsp;)
+                                        void<div class="mdesc"><div class="short">Remove all Records from the Store and fires the clear event.</div><div class="long">Remove all Records from the Store and fires the <a href="output/Ext.data.Store.html#Ext.data.Store-clear" ext:member="clear" ext:cls="Ext.data.Store">clear</a> event.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>silent</code> : Boolean<div class="sub-desc">[false] Defaults to <tt>false</tt>.  Set <tt>true</tt> to not fire clear event.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#removeAll" ext:member="#removeAll" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-removeAt"></a><b><a href="source/Store.html#method-Ext.data.Store-removeAt">removeAt</a></b>(&nbsp;<code>Number&nbsp;index</code>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Remove a Record from the Store at the specified index. Fires the remove event.</div><div class="long">Remove a Record from the Store at the specified index. Fires the <a href="output/Ext.data.Store.html#Ext.data.Store-remove" ext:member="remove" ext:cls="Ext.data.Store">remove</a> event.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>index</code> : Number<div class="sub-desc">The index of the record to remove.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#removeAt" ext:member="#removeAt" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-removeListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-removeListener">removeListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
     :
@@ -482,7 +557,7 @@ event...</div><div class="long">Resume firing events. (see <a href="output/Ext.u
 If events were suspended using the <tt><b>queueSuspended</b></tt> parameter, then all
 events fired during event suspension will be sent to any listeners now.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#resumeEvents" ext:member="#resumeEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-save"></a><b><a href="source/Store.html#method-Ext.data.Store-save">save</a></b>()
     :
-                                        void<div class="mdesc"><div class="short">Saves all pending changes to the store.  If the commensurate Ext.data.Api.actions action is not configured, then
+                                        Number<div class="mdesc"><div class="short">Saves all pending changes to the store.  If the commensurate Ext.data.Api.actions action is not configured, then
 the ...</div><div class="long">Saves all pending changes to the store.  If the commensurate Ext.data.Api.actions action is not configured, then
 the configured <code><a href="output/Ext.data.Store.html#Ext.data.Store-url" ext:member="url" ext:cls="Ext.data.Store">url</a></code> will be used.
 <pre>
@@ -491,16 +566,39 @@ change            url
 removed records   Ext.data.Api.actions.destroy
 phantom records   Ext.data.Api.actions.create
 <a href="output/Ext.data.Store.html#Ext.data.Store-getModifiedRecords" ext:member="getModifiedRecords" ext:cls="Ext.data.Store">modified records</a>  Ext.data.Api.actions.update
-</pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#save" ext:member="#save" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-setBaseParam"></a><b><a href="source/Store.html#method-Ext.data.Store-setBaseParam">setBaseParam</a></b>(&nbsp;<code>String&nbsp;name</code>,&nbsp;<code>Mixed&nbsp;value</code>&nbsp;)
+</pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Number</code><div class="sub-desc">batch Returns a number to uniquely identify the "batch" of saves occurring. -1 will be returned
+if there are no items to save or the save was cancelled.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#save" ext:member="#save" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-setBaseParam"></a><b><a href="source/Store.html#method-Ext.data.Store-setBaseParam">setBaseParam</a></b>(&nbsp;<code>String&nbsp;name</code>,&nbsp;<code>Mixed&nbsp;value</code>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Set the value for a property name in this store's baseParams.  Usage:myStore.setBaseParam('foo', {bar:3});</div><div class="long">Set the value for a property name in this store's <a href="output/Ext.data.Store.html#Ext.data.Store-baseParams" ext:member="baseParams" ext:cls="Ext.data.Store">baseParams</a>.  Usage:</p><pre><code>myStore.setBaseParam(<em>'foo'</em>, {bar:3});</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>name</code> : String<div class="sub-desc">Name of the property to assign</div></li><li><code>value</code> : Mixed<div class="sub-desc">Value to assign the <tt>name</tt>d property</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#setBaseParam" ext:member="#setBaseParam" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-setDefaultSort"></a><b><a href="source/Store.html#method-Ext.data.Store-setDefaultSort">setDefaultSort</a></b>(&nbsp;<code>String&nbsp;fieldName</code>,&nbsp;<span title="Optional" class="optional">[<code>String&nbsp;dir</code>]</span>&nbsp;)
     :
-                                        void<div class="mdesc"><div class="short">Sets the default sort column and order to be used by the next load operation.</div><div class="long">Sets the default sort column and order to be used by the next <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> operation.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fieldName</code> : String<div class="sub-desc">The name of the field to sort by.</div></li><li><code>dir</code> : String<div class="sub-desc">(optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to <tt>'ASC'</tt>)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#setDefaultSort" ext:member="#setDefaultSort" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-sort"></a><b><a href="source/Store.html#method-Ext.data.Store-sort">sort</a></b>(&nbsp;<code>String&nbsp;fieldName</code>,&nbsp;<span title="Optional" class="optional">[<code>String&nbsp;dir</code>]</span>&nbsp;)
+                                        void<div class="mdesc"><div class="short">Sets the default sort column and order to be used by the next load operation.</div><div class="long">Sets the default sort column and order to be used by the next <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> operation.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fieldName</code> : String<div class="sub-desc">The name of the field to sort by.</div></li><li><code>dir</code> : String<div class="sub-desc">(optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to <tt>'ASC'</tt>)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#setDefaultSort" ext:member="#setDefaultSort" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-singleSort"></a><b><a href="source/Store.html#method-Ext.data.Store-singleSort">singleSort</a></b>(&nbsp;<code>String&nbsp;fieldName</code>,&nbsp;<span title="Optional" class="optional">[<code>String&nbsp;dir</code>]</span>&nbsp;)
+    :
+                                        void<div class="mdesc"><div class="short">Sorts the store contents by a single field and direction. This is called internally by sort and would
+not usually be ...</div><div class="long">Sorts the store contents by a single field and direction. This is called internally by <a href="output/sort.html" ext:cls="sort">sort</a> and would
+not usually be called manually<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fieldName</code> : String<div class="sub-desc">The name of the field to sort by.</div></li><li><code>dir</code> : String<div class="sub-desc">(optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to <tt>'ASC'</tt>)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#singleSort" ext:member="#singleSort" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-sort"></a><b><a href="source/Store.html#method-Ext.data.Store-sort">sort</a></b>(&nbsp;<code>String/Array&nbsp;fieldName</code>,&nbsp;<span title="Optional" class="optional">[<code>String&nbsp;dir</code>]</span>&nbsp;)
     :
                                         void<div class="mdesc"><div class="short">Sort the Records.
 If remote sorting is used, the sort is performed on the server, and the cache is reloaded. If local...</div><div class="long">Sort the Records.
 If remote sorting is used, the sort is performed on the server, and the cache is reloaded. If local
-sorting is used, the cache is sorted internally. See also <a href="output/Ext.data.Store.html#Ext.data.Store-remoteSort" ext:member="remoteSort" ext:cls="Ext.data.Store">remoteSort</a> and <a href="output/Ext.data.Store.html#Ext.data.Store-paramNames" ext:member="paramNames" ext:cls="Ext.data.Store">paramNames</a>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fieldName</code> : String<div class="sub-desc">The name of the field to sort by.</div></li><li><code>dir</code> : String<div class="sub-desc">(optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to <tt>'ASC'</tt>)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#sort" ext:member="#sort" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-sum"></a><b><a href="source/Store.html#method-Ext.data.Store-sum">sum</a></b>(&nbsp;<code>String&nbsp;property</code>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;start</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;end</code>]</span>&nbsp;)
+sorting is used, the cache is sorted internally. See also <a href="output/Ext.data.Store.html#Ext.data.Store-remoteSort" ext:member="remoteSort" ext:cls="Ext.data.Store">remoteSort</a> and <a href="output/Ext.data.Store.html#Ext.data.Store-paramNames" ext:member="paramNames" ext:cls="Ext.data.Store">paramNames</a>.
+This function accepts two call signatures - pass in a field name as the first argument to sort on a single
+field, or pass in an array of sort configuration objects to sort by multiple fields.
+Single sort example:
+store.sort('name', 'ASC');
+Multi sort example:
+store.sort([
+{
+field    : 'name',
+direction: 'ASC'
+},
+{
+field    : 'salary',
+direction: 'DESC'
+}
+], 'ASC');
+In this second form, the sort configs are applied in order, with later sorters sorting within earlier sorters' results.
+For example, if two records with the same name are present they will also be sorted by salary if given the sort configs
+above. Any number of sort configs can be added.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>fieldName</code> : String/Array<div class="sub-desc">The name of the field to sort by, or an array of ordered sort configs</div></li><li><code>dir</code> : String<div class="sub-desc">(optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to <tt>'ASC'</tt>)</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#sort" ext:member="#sort" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-sum"></a><b><a href="source/Store.html#method-Ext.data.Store-sum">sum</a></b>(&nbsp;<code>String&nbsp;property</code>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;start</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Number&nbsp;end</code>]</span>&nbsp;)
     :
                                         Number<div class="mdesc"><div class="short">Sums the value of property for each record between start
 and end and returns the result.</div><div class="long">Sums the value of <tt>property</tt> for each <a href="output/Ext.data.Record.html" ext:cls="Ext.data.Record">record</a> between <tt>start</tt>
@@ -515,11 +613,14 @@ after the <a href="output/Ext.util.Observable.html#Ext.util.Observable-resumeEve
                                       (&nbsp;<code>Store&nbsp;this</code>,&nbsp;<code>Object&nbsp;options</code>&nbsp;)
     <div class="mdesc"><div class="short">Fires before a request is made for a new data object.  If the beforeload handler returns
 false the load action will b...</div><div class="long">Fires before a request is made for a new data object.  If the beforeload handler returns
-<tt>false</tt> the <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> action will be canceled.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>options</code> : Object<div class="sub-desc">The loading options that were specified (see <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> for details)</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#beforeload" ext:member="#beforeload" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-beforewrite"></a><b><a href="source/Store.html#event-Ext.data.Store-beforewrite">beforewrite</a></b> :
-                                      (&nbsp;<code>DataProxy&nbsp;this</code>,&nbsp;<code>String&nbsp;action</code>,&nbsp;<code>Record/Array[Record]&nbsp;rs</code>,&nbsp;<code>Object&nbsp;options</code>,&nbsp;<code>Object&nbsp;arg</code>&nbsp;)
-    <div class="mdesc"><div class="short"></div><div class="long"><div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : DataProxy<div class="sub-desc"></div></li><li><code>action</code> : String<div class="sub-desc">[Ext.data.Api.actions.create|update|destroy]</div></li><li><code>rs</code> : Record/Array[Record]<div class="sub-desc"></div></li><li><code>options</code> : Object<div class="sub-desc">The loading options that were specified. Edit <code>options.params</code> to add Http parameters to the request.  (see <a href="output/Ext.data.Store.html#Ext.data.Store-save" ext:member="save" ext:cls="Ext.data.Store">save</a> for details)</div></li><li><code>arg</code> : Object<div class="sub-desc">The callback's arg object passed to the <a href="output/Ext.data.Store.html#Ext.data.Store-request" ext:member="request" ext:cls="Ext.data.Store">request</a> function</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#beforewrite" ext:member="#beforewrite" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-clear"></a><b><a href="source/Store.html#event-Ext.data.Store-clear">clear</a></b> :
-                                      (&nbsp;<code>Store&nbsp;this</code>&nbsp;)
-    <div class="mdesc"><div class="short">Fires when the data cache has been cleared.</div><div class="long">Fires when the data cache has been cleared.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#clear" ext:member="#clear" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-datachanged"></a><b><a href="source/Store.html#event-Ext.data.Store-datachanged">datachanged</a></b> :
+<tt>false</tt> the <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> action will be canceled.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>options</code> : Object<div class="sub-desc">The loading options that were specified (see <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> for details)</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#beforeload" ext:member="#beforeload" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-beforesave"></a><b><a href="source/Store.html#event-Ext.data.Store-beforesave">beforesave</a></b> :
+                                      (&nbsp;<code>Ext.data.Store&nbsp;store</code>,&nbsp;<code>Object&nbsp;data</code>&nbsp;)
+    <div class="mdesc"><div class="short">Fires before a save action is called. A save encompasses destroying records, updating records and creating records.</div><div class="long">Fires before a save action is called. A save encompasses destroying records, updating records and creating records.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>store</code> : Ext.data.Store<div class="sub-desc"></div></li><li><code>data</code> : Object<div class="sub-desc">An object containing the data that is to be saved. The object will contain a key for each appropriate action,
+with an array of records for each action.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#beforesave" ext:member="#beforesave" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-beforewrite"></a><b><a href="source/Store.html#event-Ext.data.Store-beforewrite">beforewrite</a></b> :
+                                      (&nbsp;<code>Ext.data.Store&nbsp;store</code>,&nbsp;<code>String&nbsp;action</code>,&nbsp;<code>Record/Record[]&nbsp;rs</code>,&nbsp;<code>Object&nbsp;options</code>,&nbsp;<code>Object&nbsp;arg</code>&nbsp;)
+    <div class="mdesc"><div class="short"></div><div class="long"><div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>store</code> : Ext.data.Store<div class="sub-desc"></div></li><li><code>action</code> : String<div class="sub-desc">[Ext.data.Api.actions.create|update|destroy]</div></li><li><code>rs</code> : Record/Record[]<div class="sub-desc">The Record(s) being written.</div></li><li><code>options</code> : Object<div class="sub-desc">The loading options that were specified. Edit <code>options.params</code> to add Http parameters to the request.  (see <a href="output/Ext.data.Store.html#Ext.data.Store-save" ext:member="save" ext:cls="Ext.data.Store">save</a> for details)</div></li><li><code>arg</code> : Object<div class="sub-desc">The callback's arg object passed to the <a href="output/Ext.data.Store.html#Ext.data.Store-request" ext:member="request" ext:cls="Ext.data.Store">request</a> function</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#beforewrite" ext:member="#beforewrite" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-clear"></a><b><a href="source/Store.html#event-Ext.data.Store-clear">clear</a></b> :
+                                      (&nbsp;<code>Store&nbsp;this</code>,&nbsp;<code>Record[]&nbsp;The</code>&nbsp;)
+    <div class="mdesc"><div class="short">Fires when the data cache has been cleared.</div><div class="long">Fires when the data cache has been cleared.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>The</code> : Record[]<div class="sub-desc">records that were cleared.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#clear" ext:member="#clear" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-datachanged"></a><b><a href="source/Store.html#event-Ext.data.Store-datachanged">datachanged</a></b> :
                                       (&nbsp;<code>Store&nbsp;this</code>&nbsp;)
     <div class="mdesc"><div class="short">Fires when the data cache has changed in a bulk manner (e.g., it has been sorted, filtered, etc.) and a
 widget that i...</div><div class="long">Fires when the data cache has changed in a bulk manner (e.g., it has been sorted, filtered, etc.) and a
@@ -530,7 +631,9 @@ This event is relayed through the corresponding Ex...</div><div class="long"><p>
 This event is relayed through the corresponding <a href="output/Ext.data.DataProxy.html" ext:cls="Ext.data.DataProxy">Ext.data.DataProxy</a>.
 See <a href="output/Ext.data.DataProxy.html" ext:cls="Ext.data.DataProxy">Ext.data.DataProxy</a>.<a href="output/Ext.data.DataProxy.html#Ext.data.DataProxy-exception" ext:member="exception" ext:cls="Ext.data.DataProxy">exception</a>
 for additional details.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>misc</code> : misc<div class="sub-desc">See <a href="output/Ext.data.DataProxy.html" ext:cls="Ext.data.DataProxy">Ext.data.DataProxy</a>.<a href="output/Ext.data.DataProxy.html#Ext.data.DataProxy-exception" ext:member="exception" ext:cls="Ext.data.DataProxy">exception</a>
-for description.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#exception" ext:member="#exception" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-load"></a><b><a href="source/Store.html#event-Ext.data.Store-load">load</a></b> :
+for description.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#exception" ext:member="#exception" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.GroupingStore-groupchange"></a><b><a href="source/GroupingStore.html#event-Ext.data.GroupingStore-groupchange">groupchange</a></b> :
+                                      (&nbsp;<code>Ext.data.GroupingStore&nbsp;store</code>,&nbsp;<code>String&nbsp;groupField</code>&nbsp;)
+    <div class="mdesc"><div class="short">Fired whenever a call to store.groupBy successfully changes the grouping on the store</div><div class="long">Fired whenever a call to store.groupBy successfully changes the grouping on the store<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>store</code> : Ext.data.GroupingStore<div class="sub-desc">The grouping store</div></li><li><code>groupField</code> : String<div class="sub-desc">The field that the store is now grouped by</div></li></ul></div></div></div></td><td class="msource">GroupingStore</td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-load"></a><b><a href="source/Store.html#event-Ext.data.Store-load">load</a></b> :
                                       (&nbsp;<code>Store&nbsp;this</code>,&nbsp;<code>Ext.data.Record[]&nbsp;records</code>,&nbsp;<code>Object&nbsp;options</code>&nbsp;)
     <div class="mdesc"><div class="short">Fires after a new set of Records has been loaded.</div><div class="long">Fires after a new set of Records has been loaded.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>records</code> : Ext.data.Record[]<div class="sub-desc">The Records that were loaded</div></li><li><code>options</code> : Object<div class="sub-desc">The loading options that were specified (see <a href="output/Ext.data.Store.html#Ext.data.Store-load" ext:member="load" ext:cls="Ext.data.Store">load</a> for details)</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#load" ext:member="#load" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-loadexception"></a><b><a href="source/Store.html#event-Ext.data.Store-loadexception">loadexception</a></b> :
                                       (&nbsp;<code>misc&nbsp;misc</code>&nbsp;)
@@ -545,15 +648,17 @@ for description.</div></li></ul></div></div></div></td><td class="msource"><a hr
                                       (&nbsp;<code>Store&nbsp;this</code>,&nbsp;<code>Object&nbsp;meta</code>&nbsp;)
     <div class="mdesc"><div class="short">Fires when this store's reader provides new metadata (fields). This is currently only supported for JsonReaders.</div><div class="long">Fires when this store's reader provides new metadata (fields). This is currently only supported for JsonReaders.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>meta</code> : Object<div class="sub-desc">The JSON metadata</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#metachange" ext:member="#metachange" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-remove"></a><b><a href="source/Store.html#event-Ext.data.Store-remove">remove</a></b> :
                                       (&nbsp;<code>Store&nbsp;this</code>,&nbsp;<code>Ext.data.Record&nbsp;record</code>,&nbsp;<code>Number&nbsp;index</code>&nbsp;)
-    <div class="mdesc"><div class="short">Fires when a Record has been removed from the Store</div><div class="long">Fires when a Record has been <a href="output/Ext.data.Store.html#Ext.data.Store-remove" ext:member="remove" ext:cls="Ext.data.Store">remove</a>d from the Store<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>record</code> : Ext.data.Record<div class="sub-desc">The Record that was removed</div></li><li><code>index</code> : Number<div class="sub-desc">The index at which the record was removed</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#remove" ext:member="#remove" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-update"></a><b><a href="source/Store.html#event-Ext.data.Store-update">update</a></b> :
+    <div class="mdesc"><div class="short">Fires when a Record has been removed from the Store</div><div class="long">Fires when a Record has been <a href="output/Ext.data.Store.html#Ext.data.Store-remove" ext:member="remove" ext:cls="Ext.data.Store">remove</a>d from the Store<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>record</code> : Ext.data.Record<div class="sub-desc">The Record that was removed</div></li><li><code>index</code> : Number<div class="sub-desc">The index at which the record was removed</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#remove" ext:member="#remove" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-save"></a><b><a href="source/Store.html#event-Ext.data.Store-save">save</a></b> :
+                                      (&nbsp;<code>Ext.data.Store&nbsp;store</code>,&nbsp;<code>Number&nbsp;batch</code>,&nbsp;<code>Object&nbsp;data</code>&nbsp;)
+    <div class="mdesc"><div class="short">Fires after a save is completed. A save encompasses destroying records, updating records and creating records.</div><div class="long">Fires after a save is completed. A save encompasses destroying records, updating records and creating records.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>store</code> : Ext.data.Store<div class="sub-desc"></div></li><li><code>batch</code> : Number<div class="sub-desc">The identifier for the batch that was saved.</div></li><li><code>data</code> : Object<div class="sub-desc">An object containing the data that is to be saved. The object will contain a key for each appropriate action,
+with an array of records for each action.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#save" ext:member="#save" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-update"></a><b><a href="source/Store.html#event-Ext.data.Store-update">update</a></b> :
                                       (&nbsp;<code>Store&nbsp;this</code>,&nbsp;<code>Ext.data.Record&nbsp;record</code>,&nbsp;<code>String&nbsp;operation</code>&nbsp;)
     <div class="mdesc"><div class="short">Fires when a Record has been updated</div><div class="long">Fires when a Record has been updated<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Store<div class="sub-desc"></div></li><li><code>record</code> : Ext.data.Record<div class="sub-desc">The Record that was updated</div></li><li><code>operation</code> : String<div class="sub-desc">The update operation being performed.  Value may be one of:
 <pre><code>Ext.data.Record.EDIT
- Ext.data.Record.REJECT
- Ext.data.Record.COMMIT</code></pre></div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#update" ext:member="#update" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-write"></a><b><a href="source/Store.html#event-Ext.data.Store-write">write</a></b> :
    Ext.data.Record.REJECT
    Ext.data.Record.COMMIT</code></pre></div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#update" ext:member="#update" ext:cls="Ext.data.Store">Store</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.data.Store-write"></a><b><a href="source/Store.html#event-Ext.data.Store-write">write</a></b> :
                                       (&nbsp;<code>Ext.data.Store&nbsp;store</code>,&nbsp;<code>String&nbsp;action</code>,&nbsp;<code>Object&nbsp;result</code>,&nbsp;<code>Ext.Direct.Transaction&nbsp;res</code>,&nbsp;<code>Record/Record[]&nbsp;rs</code>&nbsp;)
     <div class="mdesc"><div class="short">Fires if the server returns 200 after an Ext.data.Api.actions CRUD action.
-Success or failure of the action is availa...</div><div class="long">Fires if the server returns 200 after an Ext.data.Api.actions CRUD action.
-Success or failure of the action is available in the <code>result[<em>'successProperty'</em>]</code> property.
-The server-code might set the <code>successProperty</code> to <tt>false</tt> if a database validation
-failed, for example.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>store</code> : Ext.data.Store<div class="sub-desc"></div></li><li><code>action</code> : String<div class="sub-desc">[Ext.data.Api.actions.create|update|destroy]</div></li><li><code>result</code> : Object<div class="sub-desc">The 'data' picked-out out of the response for convenience.</div></li><li><code>res</code> : Ext.Direct.Transaction<div class="sub-desc"></div></li><li><code>rs</code> : Record/Record[]<div class="sub-desc">Store's records, the subject(s) of the write-action</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#write" ext:member="#write" ext:cls="Ext.data.Store">Store</a></td></tr></tbody></table></div>
\ No newline at end of file
+Success of the action is determined in the...</div><div class="long">Fires if the server returns 200 after an Ext.data.Api.actions CRUD action.
+Success of the action is determined in the <code>result[<em>'successProperty'</em>]</code>property (<b>NOTE</b> for RESTful stores,
+a simple 20x response is sufficient for the actions "destroy" and "update".  The "create" action should should return 200 along with a database pk).<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>store</code> : Ext.data.Store<div class="sub-desc"></div></li><li><code>action</code> : String<div class="sub-desc">[Ext.data.Api.actions.create|update|destroy]</div></li><li><code>result</code> : Object<div class="sub-desc">The 'data' picked-out out of the response for convenience.</div></li><li><code>res</code> : Ext.Direct.Transaction<div class="sub-desc"></div></li><li><code>rs</code> : Record/Record[]<div class="sub-desc">Store's records, the subject(s) of the write-action</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.data.Store.html#write" ext:member="#write" ext:cls="Ext.data.Store">Store</a></td></tr></tbody></table></div>
\ No newline at end of file