Ext.define("App.override.grid.feature.RowBody", {
override: "Ext.grid.feature.RowBody",
extraRowTpl: [
'{%',
'if(this.rowBody.bodyBefore) {',
'values.view.renderColumnSizer(values, out);',
'} else {',
'this.nextTpl.applyOut(values, out, parent);',
'}',
'values.view.rowBodyFeature.setupRowData(values.record, values.recordIndex, values);',
'%}',
'<tr class="' + Ext.baseCSSPrefix + 'grid-rowbody-tr {rowBodyCls}" {ariaRowAttr}>',
'<td class="' + Ext.baseCSSPrefix + 'grid-td ' + Ext.baseCSSPrefix + 'grid-cell-rowbody" colspan="{rowBodyColspan}" {ariaCellAttr}>',
'<div class="' + Ext.baseCSSPrefix + 'grid-rowbody {rowBodyDivCls}" {ariaCellInnerAttr}>{rowBody}</div>',
'</td>',
'</tr>',
'{%',
'if(this.rowBody.bodyBefore) {',
'this.nextTpl.applyOut(values, out, parent);',
'}',
'%}',
// RD ->
'{%',
'if(this.rowBody.secondRowBody) {',
'values.view.rowBodyFeature.setupRowData(values.record, values.recordIndex, values, true);',
'}',
'%}',
'<tpl if="this.rowBody.secondRowBody">',
'<tr class="' + Ext.baseCSSPrefix + 'grid-rowbody-tr {rowBodyCls}" {ariaRowAttr}>',
'<td class="' + Ext.baseCSSPrefix + 'grid-td ' + Ext.baseCSSPrefix + 'grid-cell-rowbody" colspan="{rowBodyColspan}" {ariaCellAttr}>',
'<div class="' + Ext.baseCSSPrefix + 'grid-rowbody {rowBodyDivCls}" {ariaCellInnerAttr}>{rowBody}</div>',
'</td>',
'</tr>',
'</tpl>',
// RD ->
{
priority: 100,
beginRowSync: function(rowSync) {
rowSync.add('rowBody', this.owner.eventSelector);
},
syncContent: function(destRow, sourceRow, columnsToUpdate) {
var owner = this.owner,
destRowBody = Ext.fly(destRow).down(owner.eventSelector, true),
sourceRowBody;
if (destRowBody && (sourceRowBody = Ext.fly(sourceRow).down(owner.eventSelector, true))) {
Ext.fly(destRowBody).syncContent(sourceRowBody);
}
}
}
],
//setupRowData: function(record, rowIndex, rowValues) {
setupRowData: function(record, rowIndex, rowValues, isSecondRowBody) { // RD
if (this.getAdditionalData) {
//Ext.apply(rowValues, this.getAdditionalData(record.data, rowIndex, record, rowValues));
Ext.apply(rowValues, this.getAdditionalData(record.data, rowIndex, record, rowValues, isSecondRowBody)); // RD
}
}
});
Ext JS сетки также не могут сделать кофе, так что да, вам нужно переопределить или расширить свой класс. Попробуйте настроить ['rowTpl'] (https://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.view.Table-property-rowTpl). Кстати, о чем «showBefore» вы говорите? Не удается увидеть его в документе API. – Greendrake
На самом деле это 'bodyBefore'. Я написал переопределение для «extraRowTpl». Просто дублированный код для создания rowBody и добавление параметра для определения того, какой из них является. – drinovc