Properties Methods Events Config Options Direct Link

    Observable
      Store
        GroupingStore

# Class Ext.data.GroupingStore

Package: | Ext.data
Defined In: | GroupingStore.js
Class: | GroupingStore
Extends: | Store

A specialized store implementation that provides for grouping records by one of the available fields. This is usually used in conjunction with an Ext.grid.GroupingView 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.

## Config Options

Config Options | Defined By
--- | ---
| autoDestroy : Boolean true to destroy the store when the component the store is bound to is destroyed (defaults to false). Note: this shoul... `true` to destroy the store when the component the store is bound to is destroyed (defaults to `false`). Note: this should be set to true when using stores that are bound to only 1 component. | Store
| autoLoad : Boolean/Object If data is not specified, and if autoLoad is true or an Object, this store's load method is automatically called afte... If `data` is not specified, and if `autoLoad` is `true` or an `Object`, this store's load method is automatically called after creation. If the value of `autoLoad` is an `Object`, this `Object` will be passed to the store's load method. | Store

autoSave : Boolean
Defaults to true causing the store to automatically save records to the server when a record is modified (ie: becomes...

Defaults to `true` causing the store to automatically save records to the server when a record is modified (ie: becomes 'dirty'). Specify `false` to manually call save to send all modifiedRecords to the server.

Note: each CRUD action will be sent as a separate request.

Store

baseParams : Object
An object containing properties which are to be sent as parameters for every HTTP request. Parameters are encoded as ...

An object containing properties which are to be sent as parameters for every HTTP request.

Parameters are encoded as standard HTTP parameters using Ext.urlEncode.

Note: `baseParams` may be superseded by any `params` specified in a `load` request, see `load` for more details.

This property may be modified after creation using the `setBaseParam` method.

Store

batch : Boolean
Defaults to true (unless restful:true). Multiple requests for each CRUD action (CREATE, READ, UPDATE and DESTROY) wil...

Defaults to `true` (unless `restful:true`). Multiple requests for each CRUD action (CREATE, READ, UPDATE and DESTROY) will be combined and sent as one transaction. Only applies when `autoSave` is set to `false`.

If Store is RESTful, the DataProxy is also RESTful, and a unique transaction is generated for each record.

Store

| data : Array An inline data object readable by the `reader`. Typically this option, or the `url` option will be specified. | Store
| defaultParamNames : Object Provides the default values for the paramNames property. To globally modify the parameters for all stores, this objec... Provides the default values for the paramNames property. To globally modify the parameters for all stores, this object should be changed on the store prototype. | Store
| groupField : String The field name by which to sort the store's data (defaults to ''). | GroupingStore
| groupOnSort : Boolean True to sort the data on the grouping field when a grouping operation occurs, false to sort based on the existing sor... 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). | GroupingStore

listeners : Object
A config object containing one or more event handlers to be added to this object during initialization. This should ...

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 addListener example for attaching multiple handlers at once.

DOM events from ExtJs Components

While some ExtJs Component classes export selected DOM events (e.g. "click", "mouseover" etc), this is usually only done when extra value can be added. For example the DataView's `click` event passing the node clicked on. To access DOM events directly from a Component's HTMLElement, listeners must be added to the Element after the Component has been rendered. A plugin can simplify this step:

    // Plugin is configured with a listeners config object.
    // The Component is appended to the argument list of all handler functions.
    Ext.DomObserver = Ext.extend(Object, {
        constructor: function(config) {
            this.listeners = config.listeners ? config.listeners : config;
        },

        // Component passes itself into plugin's init method
        init: function(c) {
            var p, l = this.listeners;
            for (p in l) {
                if (Ext.isFunction(l[p])) {
                    l[p] = this.createHandler(l[p], c);
                } else {
                    l[p].fn = this.createHandler(l[p].fn, c);
                }
            }

            // Add the listeners to the Element immediately following the render call
            c.render = c.render.createSequence(function() {
                var e = c.getEl();
                if (e) {
                    e.on(l);
                }
            });
        },

        createHandler: function(fn, c) {
            return function(e) {
                fn.call(this, e, c);
            };
        }
    });

    var combo = new Ext.form.ComboBox({

        // Collapse combo when its element is clicked on
        plugins: [ new Ext.DomObserver({
            click: function(evt, comp) {
                comp.collapse();
            }
        })],
        store: myStore,
        typeAhead: true,
        mode: 'local',
        triggerAction: 'all'
    });

Observable

paramNames : Object
An object containing properties which specify the names of the paging and sorting parameters passed to remote servers...

An object containing properties which specify the names of the paging and sorting parameters passed to remote servers when loading blocks of data. By default, this object takes the following form:

    {
        start : 'start',  // The parameter name which specifies the start row
        limit : 'limit',  // The parameter name which specifies number of rows to return
        sort : 'sort',    // The parameter name which specifies the column to sort on
        dir : 'dir'       // The parameter name which specifies the sort direction
    }

The server must produce the requested data block upon receipt of these parameter names. If different parameter names are required, this property can be overriden using a configuration property.

A PagingToolbar bound to this Store uses this property to determine the parameter names to use in its requests.

Store

| proxy : Ext.data.DataProxy The DataProxy object which provides access to a data object. See `url`. | Store
| pruneModifiedRecords : Boolean true to clear all modified record information each time the store is loaded or when a record is removed (defaults to ... `true` to clear all modified record information each time the store is loaded or when a record is removed (defaults to `false`). See getModifiedRecords for the accessor method to retrieve the modified records. | Store
| reader : Ext.data.DataReader The Reader object which processes the data object and returns an Array of Ext.data.Record objects which are cached ke... The Reader object which processes the data object and returns an Array of Ext.data.Record objects which are cached keyed by their `id` property. | Store

remoteGroup : Boolean
True if the grouping should apply on the server side, false if it is local only (defaults to false). If the grouping...
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.

GroupingStore

remoteSort : boolean
true if sorting is to be handled by requesting the Proxy to provide a refreshed version of the data object in sorted ...
`true` if sorting is to be handled by requesting the `Proxy` to provide a refreshed version of the data object in sorted order, as opposed to sorting the Record cache in place (defaults to `false`).

If `remoteSort` is `true`, then clicking on a Grid Column's header causes the current page to be requested from the server appending the following two parameters to the `params`:

- `sort` : String

  The `name` (as specified in the Record's Field definition) of the field to sort on.

- `dir` : String

  The direction of the sort, 'ASC' or 'DESC' (case-sensitive).

Store

restful : Boolean
Defaults to false. Set to true to have the Store and the set Proxy operate in a RESTful manner. The store will autom...
Defaults to `false`. Set to `true` to have the Store and the set Proxy operate in a RESTful manner. The store will automatically generate GET, POST, PUT and DELETE requests to the server. The HTTP method used for any given CRUD action is described in Ext.data.Api.restActions. For additional information see Ext.data.DataProxy.restful.

Note: if `restful:true` `batch` will internally be set to `false`.

Store

sortInfo : Object
A config object to specify the sort order in the request of a Store's load operation. Note that for local sorting, t...
A config object to specify the sort order in the request of a Store's load operation. Note that for local sorting, the `direction` property is case-sensitive. See also remoteSort and paramNames. For example:

    sortInfo: {
        field: 'fieldName',
        direction: 'ASC' // or 'DESC' (case sensitive for local sorting)
    }

Store

| storeId : String If passed, the id to use to register with the StoreMgr. Note: if a (deprecated) id is specified it will supersede the... If passed, the id to use to register with the StoreMgr. Note: if a (deprecated) `id` is specified it will supersede the `storeId` assignment. | Store
| url : String If a proxy is not specified the url will be used to implicitly configure a HttpProxy if an url is specified. Typicall... If a `proxy` is not specified the `url` will be used to implicitly configure a HttpProxy if an `url` is specified. Typically this option, or the `data` option will be specified. | Store

writer : Ext.data.DataWriter
The Writer object which processes a record object for being written to the server-side database. When a writer is ins...

The Writer object which processes a record object for being written to the server-side database.

When a writer is installed into a Store the add, remove, and update events on the store are monitored in order to remotely create records, destroy records, or update records.

The proxy for this store will relay any writexception events to this store.

Sample implementation:

    var writer = new Ext.data.JsonWriter({
        encode: true,
        writeAllFields: true // write all fields, not just those that changed
    });

    // Typical Store collecting the Proxy, Reader and Writer together.
    var store = new Ext.data.Store({
        storeId: 'user',
        root: 'records',
        proxy: proxy,
        reader: reader,
        writer: writer,     // <-- plug a DataWriter into the store just as you would a Reader
        paramsAsHash: true,
        autoSave: false    // <-- false to delay executing create, update, destroy requests
                            //     until specifically told to do so.
    });

Store

## Public Properties

Property | Defined By
--- | ---
| baseParams : Object See the corresponding configuration option for a description of this property. To modify this property see setBasePar... See the `corresponding configuration option` for a description of this property. To modify this property see `setBaseParam`. | Store
| fields : Ext.util.MixedCollection A MixedCollection containing the defined Fields for the Records stored in this Store. Read-only. | Store
| isDestroyed : Boolean True if the store has been destroyed already. Read only | Store
| lastOptions : Object Contains the last options object used as the parameter to the load method. See load for the details of what this may ... Contains the last options object used as the parameter to the load method. See load 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. | Store
| multiSort : Boolean True if this store is currently sorted by more than one field/direction combination. | Store
| multiSortInfo : Object Object containing overall sort direction and an ordered array of sorter configs used when sorting on multiple fields | Store

recordType : Function
The Record constructor as supplied to (or created by) the Reader. Read-only. If the Reader was constructed by passing...
The Record constructor as supplied to (or created by) the Reader. Read-only.

If the Reader was constructed by passing in an Array of Ext.data.Field definition objects, instead of a Record constructor, it will implicitly create a Record constructor from that Array (see Ext.data.Record.create for additional details).

This property may be used to create new Records of the type held in this Store, for example:

    // create the data store
        var store = new Ext.data.ArrayStore({
            autoDestroy: true,
            fields: [
               {name: 'company'},
               {name: 'price', type: 'float'},
               {name: 'change', type: 'float'},
               {name: 'pctChange', type: 'float'},
               {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
            ]
        });
        store.loadData(myData);

        // create the Grid
        var grid = new Ext.grid.EditorGridPanel({
            store: store,
            colModel: new Ext.grid.ColumnModel({
                columns: [
                    {id:'company', header: 'Company', width: 160, dataIndex: 'company'},
                    {header: 'Price', renderer: 'usMoney', dataIndex: 'price'},
                    {header: 'Change', renderer: change, dataIndex: 'change'},
                    {header: '% Change', renderer: pctChange, dataIndex: 'pctChange'},
                    {header: 'Last Updated', width: 85,
                        renderer: Ext.util.Format.dateRenderer('m/d/Y'),
                        dataIndex: 'lastChange'}
                ],
                defaults: {
                    sortable: true,
                    width: 75
                }
            }),
            autoExpandColumn: 'company', // match the id specified in the column model
            height:350,
            width:600,
            title:'Array Grid',
            tbar: [{
                text: 'Add Record',
                handler : function(){
                    var defaultData = {
                        change: 0,
                        company: 'New Company',
                        lastChange: (new Date()).clearTime(),
                        pctChange: 0,
                        price: 10
                    };
                    var recId = 3; // provide unique id
                    var p = new store.recordType(defaultData, recId); // create new record
                    grid.stopEditing();
                    store.insert(0, p); // insert a new record into the store (also see add)
                    grid.startEditing(0, 0);
                }
            }]
        });

Store

## Public Methods

Method | Defined By
--- | ---

GroupingStore( `Object config` )
Creates a new GroupingStore.
Creates a new GroupingStore.
Parameters:

- `config` : Object
  A config object containing the objects needed for the Store to access data, and read the data into Records.

Returns:

- void

GroupingStore

add( `Ext.data.Record[] records` ) : void
Add Records to the Store and fires the add event. To add Records to the store from a remote source use load({add:tru...
Add Records to the Store and fires the add event. To add Records to the store from a remote source use `load({add:true})`. See also `recordType` and `insert`.
Parameters:

- `records` : Ext.data.Record[]
  An Array of Ext.data.Record objects to add to the cache. See recordType.

Returns:

- void

Store

addEvents( `Object|String o`, `string Optional.` ) : void
Adds the specified events to the list of events which this Observable may fire.
Adds the specified events to the list of events which this Observable may fire.
Parameters:

- `o` : Object|String
  Either an object with event names as properties with a value of `true` or the first event name string if multiple event names are being passed as separate parameters.
- `Optional.` : string
  Event name if multiple event names are being passed as separate parameters. Usage:

      this.addEvents('storeloaded', 'storecleared');

Returns:

- void

Observable

addListener( `String eventName`, `Function handler`, [`Object scope`], [`Object options`] ) : void
Appends an event handler to this object.
Appends an event handler to this object.
Parameters:

- `eventName` : String
  The name of the event to listen for.
- `handler` : Function
  The method the event invokes.
- `scope` : Object
  (optional) The scope (`this` reference) in which the handler function is executed. If omitted, defaults to the object which fired the event.
- `options` : Object
  (optional) An object containing handler configuration. properties. This may contain any of the following properties:
  - scope : Object
    The scope (`this` reference) in which the handler function is executed. If omitted, defaults to the object which fired the event.
  - delay : Number
    The number of milliseconds to delay the invocation of the handler after the event fires.
  - single : Boolean
    True to add a handler to handle just the next firing of the event, and then remove itself.
  - buffer : Number
    Causes the handler to be scheduled to run in an Ext.util.DelayedTask delayed by the specified number of milliseconds. If the event fires again within that time, the original handler is not invoked, but the new handler is scheduled in its place.
  - target : Observable
    Only call the handler if the event was fired on the target Observable, not if the event was bubbled up from a child Observable.

  Combining Options
  Using the options argument, it is possible to combine different types of listeners:
  A delayed, one-time listener.

      myDataView.on('click', this.onClick, this, {
      single: true,
      delay: 100
      });

  Attaching multiple handlers in 1 call
  The method also allows for a single argument to be passed which is a config object containing properties which specify multiple handlers.

      myGridPanel.on({
      'click' : {
          fn: this.onClick,
          scope: this,
          delay: 100
      },
      'mouseover' : {
          fn: this.onMouseOver,
          scope: this
      },
      'mouseout' : {
          fn: this.onMouseOut,
          scope: this
      }
      });

  Or a shorthand syntax:

      myGridPanel.on({
      'click' : this.onClick,
      'mouseover' : this.onMouseOver,
      'mouseout' : this.onMouseOut,
       scope: this
      });

Returns:

- void

Observable

addSorted( `Ext.data.Record record` ) : void
(Local sort only) Inserts the passed Record into the Store at the index where it should go based on the current sort ...
(Local sort only) Inserts the passed Record into the Store at the index where it should go based on the current sort information.
Parameters:

- `record` : Ext.data.Record

Returns:

- void

Store

clearFilter( `Boolean suppressEvent` ) : void
Revert to a view of the Record cache with no filtering applied.
Revert to a view of the Record cache with no filtering applied.
Parameters:

- `suppressEvent` : Boolean
  If `true` the filter is cleared silently without firing the datachanged event.

Returns:

- void

Store

clearGrouping() : void
Clears any existing grouping and refreshes the data using the default sort.
Clears any existing grouping and refreshes the data using the default sort.
Parameters:

- None.

Returns:

- void

GroupingStore

collect( `String dataIndex`, [`Boolean allowNull`], [`Boolean bypassFilter`] ) : Array
Collects unique values for a particular dataIndex from this store.
Collects unique values for a particular dataIndex from this store.
Parameters:

- `dataIndex` : String
  The property to collect
- `allowNull` : Boolean
  (optional) Pass true to allow null, undefined or empty string values
- `bypassFilter` : Boolean
  (optional) Pass true to collect from all records, even ones which are filtered

Returns:

- `Array`
  An array of the unique values

Store

commitChanges() : void
Commit all Records with outstanding changes. To handle updates for changes, subscribe to the Store's update event, an...
Commit all Records with outstanding changes. To handle updates for changes, subscribe to the Store's update event, and perform updating when the third parameter is Ext.data.Record.COMMIT.
Parameters:

- None.

Returns:

- void

Store

destroy() : void
Destroys the store.
Destroys the store.
Parameters:

- None.

Returns:

- void

Store

each( `Function fn`, [`Object scope`] ) : void
Calls the specified function for each of the Records in the cache.
Calls the specified function for each of the Records in the cache.
Parameters:

- `fn` : Function
  The function to call. The Record is passed as the first parameter. Returning `false` aborts and exits the iteration.
- `scope` : Object
  (optional) The scope (`this` reference) in which the function is executed. Defaults to the current Record in the iteration.

Returns:

- void

Store

enableBubble( `String/Array events` ) : void
Enables events fired by this Observable to bubble up an owner hierarchy by calling this.getBubbleTarget() if present....

Enables events fired by this Observable to bubble up an owner hierarchy by calling `this.getBubbleTarget()` if present. There is no implementation in the Observable base class.

This is commonly used by Ext.Components to bubble events to owner Containers. See Ext.Component.getBubbleTarget. 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.

Example:

    Ext.override(Ext.form.Field, {
        //  Add functionality to Field's initComponent to enable the change event to bubble
        initComponent : Ext.form.Field.prototype.initComponent.createSequence(function() {
            this.enableBubble('change');
        }),

        //  We know that we want Field's events to bubble directly to the FormPanel.
        getBubbleTarget : function() {
            if (!this.formPanel) {
                this.formPanel = this.findParentByType('form');
            }
            return this.formPanel;
        }
    });

    var myForm = new Ext.formPanel({
        title: 'User Details',
        items: [{
            ...
        }],
        listeners: {
            change: function() {
                // Title goes red if form has been modified.
                myForm.header.setStyle('color', 'red');
            }
        }
    });

Parameters:

- `events` : String/Array
  The event name to bubble, or an Array of event names.

Returns:

- void

Observable

filter( `String|Array field`, `String/RegExp value`, [`Boolean anyMatch`], [`Boolean caseSensitive`], `Boolean exactMatch` ) : void
Filter the records by a specified property. Alternatively, pass an array of filter options to filter by more than one...
Filter the records 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:

    store.filter([
    {
    property     : 'name',
    value        : 'Ed',
    anyMatch     : true, //optional, defaults to true
    caseSensitive: true  //optional, defaults to true
    },
    //filter functions can also be passed
    {
    fn   : function(record) {
    return record.get('age') == 24
    },
    scope: this
    }
    ]);

Parameters:

- `field` : String|Array
  A field on your records, or an array containing multiple filter options
- `value` : String/RegExp
  Either a string that the field should begin with, or a RegExp to test against the field.
- `anyMatch` : Boolean
  (optional) `true` to match any part not just the beginning
- `caseSensitive` : Boolean
  (optional) `true` for case sensitive comparison
- `exactMatch` : Boolean
  True to force exact match (^ and $ characters added to the regex). Defaults to false. Ignored if anyMatch is true.

Returns:

- void

Store

filterBy( `Function fn`, [`Object scope`] ) : void
Filter by a function. The specified function will be called for each Record in this Store. If the function returns tr...
Filter by a function. The specified function will be called for each Record in this Store. If the function returns `true` the Record is included, otherwise it is filtered out.
Parameters:

- `fn` : Function
  The function to be called. It will be passed the following parameters:
  - record : Ext.data.Record

    The record to test for filtering. Access field values using Ext.data.Record.get.

  - id : Object

    The ID of the Record passed.

- `scope` : Object
  (optional) The scope (`this` reference) in which the function is executed. Defaults to this Store.

Returns:

- void

Store

find( `String fieldName`, `String/RegExp value`, [`Number startIndex`], [`Boolean anyMatch`], [`Boolean caseSensitive`] ) : Number
Finds the index of the first matching Record in this store by a specific field value.
Finds the index of the first matching Record in this store by a specific field value.
Parameters:

- `fieldName` : String
  The name of the Record field to test.
- `value` : String/RegExp
  Either a string that the field value should begin with, or a RegExp to test against the field.
- `startIndex` : Number
  (optional) The index to start searching at
- `anyMatch` : Boolean
  (optional) True to match any part of the string, not just the beginning
- `caseSensitive` : Boolean
  (optional) True for case sensitive comparison

Returns:

- `Number`
  The matched index or -1

Store

findBy( `Function fn`, [`Object scope`], [`Number startIndex`] ) : Number
Find the index of the first matching Record in this Store by a function. If the function returns true it is considere...
Find the index of the first matching Record in this Store by a function. If the function returns `true` it is considered a match.
Parameters:

- `fn` : Function
  The function to be called. It will be passed the following parameters:
  - record : Ext.data.Record

    The record to test for filtering. Access field values using Ext.data.Record.get.

  - id : Object

    The ID of the Record passed.

- `scope` : Object
  (optional) The scope (`this` reference) in which the function is executed. Defaults to this Store.
- `startIndex` : Number
  (optional) The index to start searching at

Returns:

- `Number`
  The matched index or -1

Store

findExact( `String fieldName`, `Mixed value`, [`Number startIndex`] ) : Number
Finds the index of the first matching Record in this store by a specific field value.
Finds the index of the first matching Record in this store by a specific field value.
Parameters:

- `fieldName` : String
  The name of the Record field to test.
- `value` : Mixed
  The value to match the field against.
- `startIndex` : Number
  (optional) The index to start searching at

Returns:

- `Number`
  The matched index or -1

Store

fireEvent( `String eventName`, `Object... args` ) : Boolean
Fires the specified event with the passed parameters (minus the event name). An event may be set to bubble up an Obse...

Fires the specified event with the passed parameters (minus the event name).

An event may be set to bubble up an Observable parent hierarchy (See Ext.Component.getBubbleTarget) by calling enableBubble.

Parameters:

- `eventName` : String
  The name of the event to fire.
- `args` : Object...
  Variable number of parameters are passed to handlers.

Returns:

- `Boolean`
  returns false if any of the handlers return false otherwise it returns true.

Observable

getAt( `Number index` ) : Ext.data.Record
Get the Record at the specified index.
Get the Record at the specified index.
Parameters:

- `index` : Number
  The index of the Record to find.

Returns:

- `Ext.data.Record`
  The Record at the passed index. Returns undefined if not found.

Store

getById( `String id` ) : Ext.data.Record
Get the Record with the specified id.
Get the Record with the specified id.
Parameters:

- `id` : String
  The id of the Record to find.

Returns:

- `Ext.data.Record`
  The Record with the passed id. Returns undefined if not found.

Store

getCount() : Number
Gets the number of cached records. If using paging, this may not be the total size of the dataset. If the data object...
Gets the number of cached records.

If using paging, this may not be the total size of the dataset. If the data object used by the Reader contains the dataset size, then the getTotalCount function returns the dataset size. Note: see the Important note in load.

Parameters:

- None.

Returns:

- `Number`
  The number of Records in the Store's cache.

Store

getModifiedRecords() : Ext.data.Record[]
Gets all records modified since the last commit. Modified records are persisted across load operations (e.g., during...
Gets all records modified since the last commit. Modified records are persisted across load operations (e.g., during paging). Note: deleted records are not included. See also `pruneModifiedRecords` and Ext.data.Record `markDirty.`.
Parameters:

- None.

Returns:

- `Ext.data.Record[]`
  An array of {@link Ext.data.Record Records} containing outstanding modifications. To obtain modified fields within a modified record see {@link Ext.data.Record}<tt>{@link Ext.data.Record#modified modified}.</tt>.

Store

getRange( [`Number startIndex`], [`Number endIndex`] ) : Ext.data.Record[]
Returns a range of Records between specified indices.
Returns a range of Records between specified indices.
Parameters:

- `startIndex` : Number
  (optional) The starting index (defaults to 0)
- `endIndex` : Number
  (optional) The ending index (defaults to the last Record in the Store)

Returns:

- `Ext.data.Record[]`
  An array of Records

Store

getSortState() : Object
Returns an object describing the current sort state of this Store.
Returns an object describing the current sort state of this Store.
Parameters:

- None.

Returns:

- `Object`
  The sort state of the Store. An object with two properties:<ul> <li><b>field : String<p class="sub-desc">The name of the field by which the Records are sorted.</p></li> <li><b>direction : String<p class="sub-desc">The sort order, 'ASC' or 'DESC' (case-sensitive).</p></li> </ul> See <tt>{@link #sortInfo}</tt> for additional details.

Store

getTotalCount() : Number
Gets the total number of records in the dataset as returned by the server. If using paging, for this to be accurate, ...
Gets the total number of records in the dataset as returned by the server.

If using paging, for this to be accurate, the data object used by the Reader must contain the dataset size. For remote data sources, the value for this property (`totalProperty` for JsonReader, `totalRecords` for XmlReader) shall be returned by a query on the server. Note: see the Important note in load.

Parameters:

- None.

Returns:

- `Number`
  The number of Records as specified in the data object passed to the Reader by the Proxy. <p><b>Note</b>: this value is not updated when changing the contents of the Store locally.</p>

Store

groupBy( `String field`, [`Boolean forceRegroup`] ) : void
Groups the data by the specified field.
Groups the data by the specified field.
Parameters:

- `field` : String
  The field name by which to sort the store's data
- `forceRegroup` : Boolean
  (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)

Returns:

- void

GroupingStore

hasListener( `String eventName` ) : Boolean
Checks to see if this object has any listeners for a specified event
Checks to see if this object has any listeners for a specified event
Parameters:

- `eventName` : String
  The name of the event to check for

Returns:

- `Boolean`
  True if the event is being listened for, else false

Observable

indexOf( `Ext.data.Record record` ) : Number
Get the index within the cache of the passed Record.
Get the index within the cache of the passed Record.
Parameters:

- `record` : Ext.data.Record
  The Ext.data.Record object to find.

Returns:

- `Number`
  The index of the passed Record. Returns -1 if not found.

Store

indexOfId( `String id` ) : Number
Get the index within the cache of the Record with the passed id.
Get the index within the cache of the Record with the passed id.
Parameters:

- `id` : String
  The id of the Record to find.

Returns:

- `Number`
  The index of the Record. Returns -1 if not found.

Store

insert( `Number index`, `Ext.data.Record[] records` ) : void
Inserts Records into the Store at the given index and fires the add event. See also add and addSorted.
Inserts Records into the Store at the given index and fires the add event. See also `add` and `addSorted`.
Parameters:

- `index` : Number
  The start index at which to insert the passed Records.
- `records` : Ext.data.Record[]
  An Array of Ext.data.Record objects to add to the cache.

Returns:

- void

Store

isFiltered() : Boolean
Returns true if this store is currently filtered
Returns true if this store is currently filtered
Parameters:

- None.

Returns:

- `Boolean`

Store

load( `Object options` ) : Boolean
Loads the Record cache from the configured proxy using the configured reader. Notes:<div class="mdetail-params"> Impo...

Loads the Record cache from the configured `proxy` using the configured `reader`.

Notes:

- Important: loading is asynchronous! This call will return before the new data has been loaded. To perform any post-processing where information from the load call is required, specify the `callback` function to be called, or use a a 'load' event handler.
- If using remote paging, the first load call must specify the `start` and `limit` properties in the `options.params` property to establish the initial position within the dataset, and the number of Records to cache on each read from the Proxy.
- If using remote sorting, the configured `sortInfo` will be automatically included with the posted parameters according to the specified `paramNames`.

Parameters:

- `options` : Object
  An object containing properties which control loading options:
  - `params` :Object

    An object containing properties to pass as HTTP parameters to a remote data source. Note: `params` will override any `baseParams` of the same name.

    Parameters are encoded as standard HTTP parameters using Ext.urlEncode.

  - callback : Function

    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:

    - r : Ext.data.Record[] An Array of Records loaded.
    - options : Options object from the load call.
    - success : Boolean success indicator.
  - scope : Object

    Scope with which to call the callback (defaults to the Store object)

  - add : Boolean

    Indicator to append loaded records rather than replace the current cache. Note: see note for `loadData`

Returns:

- `Boolean`
  If the <i>developer</i> provided <tt>{@link #beforeload}</tt> event handler returns <tt>false</tt>, the load call will abort and will return <tt>false</tt>; otherwise will return <tt>true</tt>.

Store

loadData( `Object data`, [`Boolean append`] ) : void
Loads data from a passed data block and fires the load event. A Reader which understands the format of the data must ...
Loads data from a passed data block and fires the load event. A Reader which understands the format of the data must have been configured in the constructor.
Parameters:

- `data` : Object
  The data block from which to read the Records. The format of the data expected is dependent on the type of Reader that is configured and should correspond to that Reader's `Ext.data.Reader.readRecords` parameter.
- `append` : Boolean
  (Optional) `true` to append the new Records rather the default to replace the existing cache. Note: that Records in a Store are keyed by their id, so added Records with ids which are already present in the Store will replace existing Records. Only Records with new, unique ids will be added.

Returns:

- void

Store

multiSort( `Array sorters`, `String direction` ) : void
Sorts the contents of this store by multiple field/direction sorters. This is called internally by sort and would not...
Sorts the contents of this store by multiple field/direction sorters. This is called internally by sort 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.
Parameters:

- `sorters` : Array
  Array of sorter objects (field and direction)
- `direction` : String
  Overall direction to sort the ordered results by (defaults to "ASC")

Returns:

- void

Store

on( `String eventName`, `Function handler`, [`Object scope`], [`Object options`] ) : void
Appends an event handler to this object (shorthand for addListener.)
Appends an event handler to this object (shorthand for addListener.)
Parameters:

- `eventName` : String
  The type of event to listen for
- `handler` : Function
  The method the event invokes
- `scope` : Object
  (optional) The scope (`this` reference) in which the handler function is executed. If omitted, defaults to the object which fired the event.
- `options` : Object
  (optional) An object containing handler configuration.

Returns:

- void

Observable

purgeListeners() : void
Removes all listeners for this object
Removes all listeners for this object
Parameters:

- None.

Returns:

- void

Observable

query( `String field`, `String/RegExp value`, [`Boolean anyMatch`], [`Boolean caseSensitive`] ) : MixedCollection
Query the records by a specified property.
Query the records by a specified property.
Parameters:

- `field` : String
  A field on your records
- `value` : String/RegExp
  Either a string that the field should begin with, or a RegExp to test against the field.
- `anyMatch` : Boolean
  (optional) True to match any part not just the beginning
- `caseSensitive` : Boolean
  (optional) True for case sensitive comparison

Returns:

- `MixedCollection`
  Returns an Ext.util.MixedCollection of the matched records

Store

queryBy( `Function fn`, [`Object scope`] ) : MixedCollection
Query the cached records in this Store using a filtering function. The specified function will be called with each re...
Query the cached records in this Store using a filtering function. The specified function will be called with each record in this Store. If the function returns `true` the record is included in the results.
Parameters:

- `fn` : Function
  The function to be called. It will be passed the following parameters:
  - record : Ext.data.Record

    The record to test for filtering. Access field values using Ext.data.Record.get.

  - id : Object

    The ID of the Record passed.

- `scope` : Object
  (optional) The scope (`this` reference) in which the function is executed. Defaults to this Store.

Returns:

- `MixedCollection`
  Returns an Ext.util.MixedCollection of the matched records

Store

rejectChanges() : void
Reject outstanding changes on all modified records.
Reject outstanding changes on all modified records.
Parameters:

- None.

Returns:

- void

Store

relayEvents( `Object o`, `Array events` ) : void
Relays selected events from the specified Observable as if the events were fired by this.
Relays selected events from the specified Observable as if the events were fired by `this`.
Parameters:

- `o` : Object
  The Observable whose events this object is to relay.
- `events` : Array
  Array of event names to relay.

Returns:

- void

Observable

reload( `Object options` ) : void
Reloads the Record cache from the configured Proxy using the configured Reader and the options from the last load ope...

Reloads the Record cache from the configured Proxy using the configured Reader and the options from the last load operation performed.

Note: see the Important note in load.

Parameters:

- `options` : Object

  (optional) An `Object` containing loading options which may override the options used in the last load operation. See load for details (defaults to `null`, in which case the lastOptions are used).

  To add new params to the existing params:

      lastOptions = myStore.lastOptions;
      Ext.apply(lastOptions.params, {
          myNewParam: true
      });
      myStore.reload(lastOptions);

Returns:

- void

Store

remove( `Ext.data.Record/Ext.data.Record[] record` ) : void
Remove Records from the Store and fires the remove event.
Remove Records from the Store and fires the remove event.
Parameters:

- `record` : Ext.data.Record/Ext.data.Record[]
  The record object or array of records to remove from the cache.

Returns:

- void

Store

removeAll( `Boolean silent` ) : void
Remove all Records from the Store and fires the clear event.
Remove all Records from the Store and fires the clear event.
Parameters:

- `silent` : Boolean
  [false] Defaults to `false`. Set `true` to not fire clear event.

Returns:

- void

Store

removeAt( `Number index` ) : void
Remove a Record from the Store at the specified index. Fires the remove event.
Remove a Record from the Store at the specified index. Fires the remove event.
Parameters:

- `index` : Number
  The index of the record to remove.

Returns:

- void

Store

removeListener( `String eventName`, `Function handler`, [`Object scope`] ) : void
Removes an event handler.
Removes an event handler.
Parameters:

- `eventName` : String
  The type of event the handler was associated with.
- `handler` : Function
  The handler to remove. This must be a reference to the function passed into the addListener call.
- `scope` : Object
  (optional) The scope originally specified for the handler.

Returns:

- void

Observable

resumeEvents() : void
Resume firing events. (see suspendEvents) If events were suspended using the queueSuspended parameter, then all event...
Resume firing events. (see suspendEvents) If events were suspended using the `queueSuspended` parameter, then all events fired during event suspension will be sent to any listeners now.
Parameters:

- None.

Returns:

- void

Observable

save() : Number
Saves all pending changes to the store. If the commensurate Ext.data.Api.actions action is not configured, then the ...
Saves all pending changes to the store. If the commensurate Ext.data.Api.actions action is not configured, then the configured `url` will be used.

    change            url
    ---------------   --------------------
    removed records   Ext.data.Api.actions.destroy
    phantom records   Ext.data.Api.actions.create
    modified records  Ext.data.Api.actions.update

Parameters:

- None.

Returns:

- `Number`
  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.

Store

setBaseParam( `String name`, `Mixed value` ) : void
Set the value for a property name in this store's baseParams. Usage:myStore.setBaseParam('foo', {bar:3});
Set the value for a property name in this store's baseParams. Usage:

    myStore.setBaseParam('foo', {bar:3});

Parameters:

- `name` : String
  Name of the property to assign
- `value` : Mixed
  Value to assign the `name`d property

Returns:

- void

Store

setDefaultSort( `String fieldName`, [`String dir`] ) : void
Sets the default sort column and order to be used by the next load operation.
Sets the default sort column and order to be used by the next load operation.
Parameters:

- `fieldName` : String
  The name of the field to sort by.
- `dir` : String
  (optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to `'ASC'`)

Returns:

- void

Store

singleSort( `String fieldName`, [`String dir`] ) : void
Sorts the store contents by a single field and direction. This is called internally by sort and would not usually be ...
Sorts the store contents by a single field and direction. This is called internally by sort and would not usually be called manually
Parameters:

- `fieldName` : String
  The name of the field to sort by.
- `dir` : String
  (optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to `'ASC'`)

Returns:

- void

Store

sort( `String/Array fieldName`, [`String dir`] ) : void
Sort the Records. If remote sorting is used, the sort is performed on the server, and the cache is reloaded. If local...
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 remoteSort and paramNames. 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.
Parameters:

- `fieldName` : String/Array
  The name of the field to sort by, or an array of ordered sort configs
- `dir` : String
  (optional) The sort order, 'ASC' or 'DESC' (case-sensitive, defaults to `'ASC'`)

Returns:

- void

Store

sum( `String property`, [`Number start`], [`Number end`] ) : Number
Sums the value of property for each record between start and end and returns the result.
Sums the value of `property` for each record between `start` and `end` and returns the result.
Parameters:

- `property` : String
  A field in each record
- `start` : Number
  (optional) The record index to start at (defaults to `0`)
- `end` : Number
  (optional) The last record index to include (defaults to length - 1)

Returns:

- `Number`
  The sum

Store

suspendEvents( `Boolean queueSuspended` ) : void
Suspend the firing of all events. (see resumeEvents)
Suspend the firing of all events. (see resumeEvents)
Parameters:

- `queueSuspended` : Boolean
  Pass as true to queue up suspended events to be fired after the resumeEvents call instead of discarding all suspended events;

Returns:

- void

Observable

un( `String eventName`, `Function handler`, [`Object scope`] ) : void
Removes an event handler (shorthand for removeListener.)
Removes an event handler (shorthand for removeListener.)
Parameters:

- `eventName` : String
  The type of event the handler was associated with.
- `handler` : Function
  The handler to remove. This must be a reference to the function passed into the addListener call.
- `scope` : Object
  (optional) The scope originally specified for the handler.

Returns:

- void

Observable

## Public Events

Event | Defined By
--- | ---

add : ( `Store this`, `Ext.data.Record[] records`, `Number index` )
Fires when Records have been added to the Store
Fires when Records have been added to the Store
Listeners will be called with the following arguments:

- `this` : Store
- `records` : Ext.data.Record[]
  The array of Records added
- `index` : Number
  The index at which the record(s) were added

Store

beforeload : ( `Store this`, `Object options` )
Fires before a request is made for a new data object. If the beforeload handler returns false the load action will b...
Fires before a request is made for a new data object. If the beforeload handler returns `false` the load action will be canceled.
Listeners will be called with the following arguments:

- `this` : Store
- `options` : Object
  The loading options that were specified (see load for details)

Store

beforesave : ( `Ext.data.Store store`, `Object data` )
Fires before a save action is called. A save encompasses destroying records, updating records and creating records.
Fires before a save action is called. A save encompasses destroying records, updating records and creating records.
Listeners will be called with the following arguments:

- `store` : Ext.data.Store
- `data` : Object
  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.

Store

beforewrite : ( `Ext.data.Store store`, `String action`, `Record/Record[] rs`, `Object options`, `Object arg` )
Listeners will be called with the following arguments:

- `store` : Ext.data.Store
- `action` : String
  [Ext.data.Api.actions.create|update|destroy]
- `rs` : Record/Record[]
  The Record(s) being written.
- `options` : Object
  The loading options that were specified. Edit `options.params` to add Http parameters to the request. (see save for details)
- `arg` : Object
  The callback's arg object passed to the request function

Store

clear : ( `Store this`, `Record[] records` )
Fires when the data cache has been cleared.
Fires when the data cache has been cleared.
Listeners will be called with the following arguments:

- `this` : Store
- `records` : Record[]
  The records that were cleared.

Store

datachanged : ( `Store this` )
Fires when the data cache has changed in a bulk manner (e.g., it has been sorted, filtered, etc.) and a widget that i...
Fires when the data cache has changed in a bulk manner (e.g., it has been sorted, filtered, etc.) and a widget that is using this Store as a Record cache should refresh its view.
Listeners will be called with the following arguments:

- `this` : Store

Store

exception : ( `misc misc` )
Fires if an exception occurs in the Proxy during a remote request. This event is relayed through the corresponding Ex...

Fires if an exception occurs in the Proxy during a remote request. This event is relayed through the corresponding Ext.data.DataProxy. See Ext.data.DataProxy.exception for additional details.

Listeners will be called with the following arguments:

- `misc` : misc
  See Ext.data.DataProxy.exception for description.

Store

groupchange : ( `Ext.data.GroupingStore store`, `String groupField` )
Fired whenever a call to store.groupBy successfully changes the grouping on the store
Fired whenever a call to store.groupBy successfully changes the grouping on the store
Listeners will be called with the following arguments:

- `store` : Ext.data.GroupingStore
  The grouping store
- `groupField` : String
  The field that the store is now grouped by

GroupingStore

load : ( `Store this`, `Ext.data.Record[] records`, `Object options` )
Fires after a new set of Records has been loaded.
Fires after a new set of Records has been loaded.
Listeners will be called with the following arguments:

- `this` : Store
- `records` : Ext.data.Record[]
  The Records that were loaded
- `options` : Object
  The loading options that were specified (see load for details)

Store

loadexception : ( `misc misc` )
This event is deprecated in favor of the catch-all exception event instead. This event is relayed through the corresp...

This event is deprecated in favor of the catch-all `exception` event instead.

This event is relayed through the corresponding Ext.data.DataProxy. See Ext.data.DataProxy.loadexception for additional details.

Listeners will be called with the following arguments:

- `misc` : misc
  See Ext.data.DataProxy.loadexception for description.

Store

metachange : ( `Store this`, `Object meta` )
Fires when this store's reader provides new metadata (fields). This is currently only supported for JsonReaders.
Fires when this store's reader provides new metadata (fields). This is currently only supported for JsonReaders.
Listeners will be called with the following arguments:

- `this` : Store
- `meta` : Object
  The JSON metadata

Store

remove : ( `Store this`, `Ext.data.Record record`, `Number index` )
Fires when a Record has been removed from the Store
Fires when a Record has been removed from the Store
Listeners will be called with the following arguments:

- `this` : Store
- `record` : Ext.data.Record
  The Record that was removed
- `index` : Number
  The index at which the record was removed

Store

save : ( `Ext.data.Store store`, `Number batch`, `Object data` )
Fires after a save is completed. A save encompasses destroying records, updating records and creating records.
Fires after a save is completed. A save encompasses destroying records, updating records and creating records.
Listeners will be called with the following arguments:

- `store` : Ext.data.Store
- `batch` : Number
  The identifier for the batch that was saved.
- `data` : Object
  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.

Store

update : ( `Store this`, `Ext.data.Record record`, `String operation` )
Fires when a Record has been updated
Fires when a Record has been updated
Listeners will be called with the following arguments:

- `this` : Store
- `record` : Ext.data.Record
  The Record that was updated
- `operation` : String
  The update operation being performed. Value may be one of:

      Ext.data.Record.EDIT
           Ext.data.Record.REJECT
           Ext.data.Record.COMMIT

Store

write : ( `Ext.data.Store store`, `String action`, `Object result`, `Ext.Direct.Transaction res`, `Record/Record[] rs` )
Fires if the server returns 200 after an Ext.data.Api.actions CRUD action. Success of the action is determined in the...
Fires if the server returns 200 after an Ext.data.Api.actions CRUD action. Success of the action is determined in the `result['successProperty']`property (NOTE 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).
Listeners will be called with the following arguments:

- `store` : Ext.data.Store
- `action` : String
  [Ext.data.Api.actions.create|update|destroy]
- `result` : Object
  The 'data' picked-out out of the response for convenience.
- `res` : Ext.Direct.Transaction
- `rs` : Record/Record[]
  Store's records, the subject(s) of the write-action

Store