Results 1 to 2 of 2

Thread: [3.4.0] this.config[a].getCellEditor is not a function

    Thank you for reporting this bug. We will make it our priority to review this report.
  1. #1
    Sencha Premium Member matei's Avatar
    Join Date
    Jun 2008
    Vote Rating

    Exclamation [3.4.0] this.config[a].getCellEditor is not a function

    Ext version tested:
    • Ext 3.4.0 - error is shown
    • Ext 3.2.1 - no errors
    Browser versions tested against:
    • Chrome
    • FF5
    • When try to Combine EditorGridPanel with CheckboxSelectionModel and filter some rows that can't be editable.
    • changes (in red), made in ext-3.4.0\examples\grid\edit-grid.js
    Steps to reproduce the problem:
    • Try to select first then second checkbox from selection model.
    • Error is shown in firebug.
    • Code:
      this.config[a].getCellEditor is not a function
     * Ext JS Library 3.4.0
     * Copyright(c) 2006-2011 Sencha Inc.
         * Handler specified for the 'Available' column renderer
         * @param {Object} value
        function formatDate(value){
            return value ? value.dateFormat('M d, Y') : '';
        // shorthand alias
        var fm = Ext.form;
        var sm = new Ext.grid.CheckboxSelectionModel({
            checkOnly: true
        // the column model has information about grid columns
        // dataIndex maps the column to the specific data field in
        // the data store (created below)
        var cm = new Ext.grid.ColumnModel({
            // specify any defaults for each column
            defaults: {
                sortable: true // columns are not sortable by default           
            isCellEditable: function(column, row){
                return row % 2;
            columns: [
                id: 'common',
                header: 'Common Name',
                dataIndex: 'common',
                width: 220,
                // use shorthand alias defined above
                editor: new fm.TextField({
                    allowBlank: false
            }, {
                header: 'Light',
                dataIndex: 'light',
                width: 130,
                editor: new fm.ComboBox({
                    typeAhead: true,
                    triggerAction: 'all',
                    // transform the data already specified in html
                    transform: 'light',
                    lazyRender: true,
                    listClass: 'x-combo-list-small'
            }, {
                header: 'Price',
                dataIndex: 'price',
                width: 70,
                align: 'right',
                renderer: 'usMoney',
                editor: new fm.NumberField({
                    allowBlank: false,
                    allowNegative: false,
                    maxValue: 100000
            }, {
                header: 'Available',
                dataIndex: 'availDate',
                width: 95,
                renderer: formatDate,
                editor: new fm.DateField({
                    format: 'm/d/y',
                    minValue: '01/01/06',
                    disabledDays: [0, 6],
                    disabledDaysText: 'Plants are not available on the weekends'
            }, {
                xtype: 'checkcolumn',
                header: 'Indoor?',
                dataIndex: 'indoor',
                width: 55
        // create the Data Store
        var store = new{
            // destroy the store if the grid is destroyed
            autoDestroy: true,
            // load remote data using HTTP
            url: 'plants.xml',
            // specify a XmlReader (coincides with the XML format of the returned data)
            reader: new{
                // records will have a 'plant' tag
                record: 'plant',
                // use an Array of field definition objects to implicitly create a Record constructor
                fields: [
                    // the 'name' below matches the tag name to read, except 'availDate'
                    // which is mapped to the tag 'availability'
                    {name: 'common', type: 'string'},
                    {name: 'botanical', type: 'string'},
                    {name: 'light'},
                    {name: 'price', type: 'float'},             
                    // dates can be automatically converted by specifying dateFormat
                    {name: 'availDate', mapping: 'availability', type: 'date', dateFormat: 'm/d/Y'},
                    {name: 'indoor', type: 'bool'}
            sortInfo: {field:'common', direction:'ASC'}
        // create the editor grid
        var grid = new Ext.grid.EditorGridPanel({
            store: store,
            cm: cm,
            sm: sm,
            renderTo: 'editor-grid',
            width: 600,
            height: 300,
            autoExpandColumn: 'common', // column with this id will be expanded
            title: 'Edit Plants?',
            frame: true,
            clicksToEdit: 1,
            tbar: [{
                text: 'Add Plant',
                handler : function(){
                    // access the Record constructor through the grid's store
                    var Plant = grid.getStore().recordType;
                    var p = new Plant({
                        common: 'New Plant 1',
                        light: 'Mostly Shade',
                        price: 0,
                        availDate: (new Date()).clearTime(),
                        indoor: false
                    store.insert(0, p);
                    grid.startEditing(0, 0);
        // manually trigger the data store load
            // store loading is asynchronous, use a load listener or callback to handle results
            callback: function(){
                    title: 'Store Load Callback',
                    msg: 'store was loaded, data available for processing',
                    modal: false,
                    icon: Ext.Msg.INFO,
                    buttons: Ext.Msg.OK

  2. #2
    Sencha Premium Member matei's Avatar
    Join Date
    Jun 2008
    Vote Rating


    Possible fix:
    Ext.override(Ext.grid.CheckboxSelectionModel, {
        getCellEditor: function(){
            return null;
    this way I fixed for our application.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts