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);


        },

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top