ExtJS RowExpander – nextBd ist null
Frage
Ich habe Probleme beim Konfigurieren von RowExpander für mein Raster.Wenn das Raster gerendert wird, ist der Expander bereits für jede Zeile geöffnet und enthält nichts.Wenn ich auf das entsprechende Symbol klicke, wird der folgende Fehler generiert:nextBd ist null.Ich habe hier ein sehr ähnliches Problem gefunden http://www.sencha.com/forum/showthread.php?185837-Grid-Panel-PlugIn-Rowexpander-nextBd-is-null Aber die Lösung funktioniert bei mir nicht und verstehe immer noch nicht, warum die Plugin-Konfiguration nicht in der initComponent-Methode übergeben werden kann:
Hier ist mein Grid-Code:
Ext.define('GSIP.view.plans.PlanReqList' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.gsip_devplan_list',
id: 'gsip_plan_list',
plugins: [{
ptype: 'rowexpander',
rowBodyTpl : [
'Nazwa:{name}'
]
}],
//title:i18n.getMsg('gsip.view.PlanReqList.title'),
layout: 'fit',
initComponent: function() {
this.store = 'DevPlan';
// this.plugins = [{
// ptype: 'rowexpander',
// rowBodyTpl : [
// {name}
// ]
// }];
this.features = [{ftype:'filters', encode:false, local:true},{ftype:'grouping'}];
this.tbar = [{
xtype:'commandbutton',
id: 'newReq',
iconCls:'icon-application_add',
text: i18n.getMsg('gsip.view.plans.PlanReqList.addReq'),
command: 'newReq',
}];
this.viewConfig = {
forceFit:true,
getRowClass: function(record, index) {
var c = record.get('elapsedPercent');
if (c >= 0) {
return 'elapsed-normal';
}
}
}
this.columns = [
{header: "Id", dataIndex: "id", width:50, sortable: true, filter:{type:'numeric'}},
{header: i18n.getMsg('gsip.view.plans.PlanReqList.column.name'), dataIndex: "name", flex:1, sortable: true, filter:{type:'string'} },
}
];
this.callParent(arguments);
},
Lösung
Der rowexpander
Das Plugin nutzt eine Funktion namens rowbody
.
In deinem initComponent()
du überschreibst this.features
(was bereits beinhaltet rowbody
) mit dieser Zeile:
this.features = [{ftype:'filters', encode:false, local:true},{ftype:'grouping'}];
Und so kam es dass der rowbody
Funktion ist nicht enthalten;Und so kam es dass der .x-grid-rowbody-tr
Klasse wird nicht injiziert;daher rowexpander
Ich kann eine solche Klasse nicht finden nextBd
und gibt null zurück.
Du solltest es versuchen:
var iNewFeatures = [{ftype:'filters', encode:false, local:true},{ftype:'grouping'}];
this.features = iNewFeatures.concat( this.features );
Schließlich können Plugins nicht initiiert werden InitComponent()
, können Sie sie entweder als Konfigurationen oder innerhalb des Konstruktors deklarieren.Sehen dieser Thread Für mehr Information.