3

グリッド値のパラメーターに対して PDF レポートを作成したいと考えています。パラメータ番号1としてアコーディオンのタイトルから年を、パラメータ番号2として月名を取得したいのですが、できません。誰でもこれについて私を助けてください。以下は私のコードです:

Ext.define('Ext4Example.view.attendence.Timeperiod' ,{
    extend: 'Ext.form.Panel',
    alias : 'widget.timeperiod',
    id: 'timeperiod',
    region: 'west',
    border: true,
    width: 150,
    height:395,
    split: true,
    defaults: {
        // applied to each contained panel
        //bodyStyle: 'padding:15px'
    },
    layout: {
        // layout-specific configs go here
        type: 'accordion',
        titleCollapse: true,
        animate: true,
        activeOnTop: true,
        hideCollapseTool : true

    },

    initComponent: function() {
        var me = this;
        me.items = me.maccord();
        me.callParent(arguments);
    },
    mstore: function(year){
        var data = [
            [1,  year, 'January'  ],
            [2,  year, 'February' ],
            [3,  year, 'March'    ],
            [4,  year, 'April'    ],
            [5,  year, 'May'      ],
            [6,  year, 'June'     ],
            [7,  year, 'July'     ], 
            [8,  year, 'August'   ], 
            [9,  year, 'September'], 
            [10, year, 'October'  ], 
            [11, year, 'November' ], 
            [12, year, 'December' ]
        ];

        var store = Ext.create('Ext.data.ArrayStore', {
            storeId: 'mstore',
            fields: [              
                {name: 'id', type: 'int'},
                {name: 'year', type: 'int'},
                {name: 'month', type: 'string'}
            ],
            data:data
        });
        return store;
    },
    mpanel: function(year){
        var me = this,
        mpanel = new Ext.grid.Panel({
            border: false,
            viewConfig: {
                stripeRows: true
            },
            hideHeaders: true,
            columns: [
                { text: 'month',  dataIndex: 'month', flex: 1},
                { menuDisabled    : true,
                    sortable        : false,
                    xtype           : 'actioncolumn',
                    width           : 24,
                    items           : [{
                            icon        : "${resource(dir: 'images', file: 'PDF01001.png')}",
                            hide        : true,
                            tooltip     : 'Print PDF Report of this Month?',
                            handler     : function(record) {
                                          alert(record.data.month)
                            }
                        }]
                }
            ],
            listeners:{
                selectionchange:function(model, records ) {
                    var store = Ext.data.StoreManager.lookup('Attendences');
                    var record = records[0];
                    store.load({
                        filters: [
                            {property:'month', value:record.data.id},
                            {property:'year', value:record.data.year}
                        ]          
                    });                    
                }
            },
            store: me.mstore(year),
            width: 150
        });
        return mpanel;
    },
    maccord: function(){          
        var year = ${(new Date()).format('yyyy')},
        limit = year - 5,
        me = this,
        maccord = [];

        for(year; year > limit ; year--){
            maccord.push({
                title: 'Year '+ year,
                ident: 'accordion-panel',
                items: me.mpanel(year)              
            });
        }
        return maccord;
    }
});
4

1 に答える 1

5

月と年はあなたの記録にあります。アコーディオンのタイトルから年を取得する必要はありません。あなたの問題は、レコードがハンドラーの最初のパラメーターではないということです:

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.column.Action-cfg-handler

items: [{
   icon: 'test',
   tooltip: 'Print PDF Report of this Month?',
   scope: this,
   handler: function(view, rowIndex, colIndex, item, e, record) {
        alert(record.data.month + "/" + record.data.year);
   }
}]

あなたが見ることができます:http://jsfiddle.net/AMx6r/1279/

于 2012-12-11T01:34:53.300 に答える