this solves it:
function afterrender(sender, eOpts) {
var view = sender.getView ? sender.getView() : sender.view;
if (!view) return;
var exp = view.rowExpander ||
(view.findPlugin && view.findPlugin('rowexpander')) ||
(view.findFeature && view.findFeature('rowexpander'));
if (!exp) return;
exp.collapseRow = function (rowIdx) {
var node = view.getNode(rowIdx);
if (!node) {
var rec = view.getStore().getAt(rowIdx);
if (rec) this.recordsExpanded[rec.internalId] = false;
return;
}
var row = Ext.get(node);
if (!row) return;
var nextBd = row.down(this.rowBodyTrSelector); // may be null; guard
if (row.hasCls(this.rowCollapsedCls)) return;
row.addCls(this.rowCollapsedCls);
if (nextBd) nextBd.addCls(this.rowBodyHiddenCls);
var record = view.getRecord(node);
if (record) this.recordsExpanded[record.internalId] = false;
if (record && nextBd) view.fireEvent('collapsebody', node, record, nextBd.dom);
};
}