Reputation: 509
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
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
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