Yarin Gold
Yarin Gold

Reputation: 509

How to get details from checking CheckBox in grid?

I have EditorGridPanel, the grid's ColumnModel includes TextField, ComboBox and CheckBox. After editing TextField or ComboBox, "afteredit" event, which contains details about the edited field, fired. When I checking/unchecking the CheckBox field, there is no event that gives any detail about which CheckBox pressed.

Upvotes: 2

Views: 5425

Answers (2)

egerardus
egerardus

Reputation: 11486

Use the checkchange event from Ext.ux.CheckColumn. That gives the rowIndex.

EDIT

If you are doing much more development in 2.2 I would recommend that you upgrade. But if you cannot, you could always try adding an override, or extending Ext.ux.CheckColumn to include the later version events. I am sure that this code would have to be tweaked to make it compatible with 2.2 but here's an example of an override to include the needed events -- I realize that I am not even sure if 2.2 had the Ext.override method, you will have to check your docs (checkchange code comes straight from the 4.1 API):

Ext.override(Ext.ux.CheckChange, {
    constructor: function() {
        this.addEvents(
            /**
             * @event beforecheckchange
             * Fires when before checked state of a row changes.
             * The change may be vetoed by returning `false` from a listener.
             * @param {Ext.ux.CheckColumn} this CheckColumn
             * @param {Number} rowIndex The row index
             * @param {Boolean} checked True if the box is to be checked
             */
            'beforecheckchange',
            /**
             * @event checkchange
             * Fires when the checked state of a row changes
             * @param {Ext.ux.CheckColumn} this CheckColumn
             * @param {Number} rowIndex The row index
             * @param {Boolean} checked True if the box is now checked
             */
            'checkchange'
        );
        this.callParent(arguments);
    },

    /**
     * @private
     * Process and refire events routed from the GridView's processEvent method.
     */
    processEvent: function(type, view, cell, recordIndex, cellIndex, e) {
        var me = this,
            key = type === 'keydown' && e.getKey(),
            mousedown = type == 'mousedown';

        if (mousedown || (key == e.ENTER || key == e.SPACE)) {
            var record = view.panel.store.getAt(recordIndex),
                dataIndex = me.dataIndex,
                checked = !record.get(dataIndex);

            // Allow apps to hook beforecheckchange
            if (me.fireEvent('beforecheckchange', me, recordIndex, checked) !== false) {
                record.set(dataIndex, checked);
                me.fireEvent('checkchange', me, recordIndex, checked);

                // Mousedown on the now nonexistent cell causes the view to blur, so stop it continuing.
                if (mousedown) {
                    e.stopEvent();
                }

                // Selection will not proceed after this because of the DOM update caused by the record modification
                // Invoke the SelectionModel unless configured not to do so
                if (!me.stopSelection) {
                    view.selModel.selectByPosition({
                        row: recordIndex,
                        column: cellIndex
                    });
                }

                // Prevent the view from propagating the event to the selection model - we have done that job.
                return false;
            } else {
                // Prevent the view from propagating the event to the selection model if configured to do so.
                return !me.stopSelection;
            }
        } else {
            return me.callParent(arguments);
        }
    },
});

Upvotes: 1

MMT
MMT

Reputation: 2216

A selection model renders a column of checkboxes that can be toggled to select or deselect rows in grid.

try applying listeners on check box selection model.

docs : Ext.selection.CheckboxModel-event-selectionchange

refer : example

Upvotes: 3

Related Questions