extjs - एक्स्टजेएस ग्रिड:नियंत्रक में एक्शन कॉलम की क्लिक इवेंट को नियंत्रित करना




extjs4.2 (2)

यदि आप अपने नियंत्रक के साथ क्लिक को संभालना चाहते हैं, तो आपको इस तरह से अपने कार्यवाहक को एक हेन्डलर जोड़ना होगा:

xtype:'actioncolumn',
width:50,
items: [{
    icon: 'extjs/examples/shared/icons/fam/cog_edit.png',  // Use a URL in the icon config
    tooltip: 'Edit',
    handler: function(view, rowIndex, colIndex, item, e, record, row) {
        this.fireEvent('itemClick', view, rowIndex, colIndex, item, e, record, row, 'edit');
    }
}]

और फिर आइटम नियंत्रक को itemclick ईवेंट के लिए ईवेंट हैंडलर जोड़ें

init: function() {
    this.control({
         'actioncolumn': {
             itemClick: this.onActionColumnItemClick
         }
     });
},
onActionColumnItemClick : function(view, rowIndex, colIndex, item, e, record, row, action) {
    alert(action + " user " + record.get('firstname'));
}

और आपको यह काम करना चाहिए, बेला यहाँ: https://fiddle.sencha.com/#fiddle/grb

मेरे पास 'कर्मचारी सूची' का एक दृश्य है इसके अंदर एक ग्रिड है। नियंत्रक से कार्रवाई कॉलम की क्लिक ईवेंट को संभालने की आवश्यकता है I यहाँ दृश्य है:

Ext.define('ExtApp.view.Employees', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.employees',
.
.
.
.
.
});

इस दृश्य में एक ग्रिड है:

xtype: 'grid',
columns:[{
.
.
.
.
xtype: 'actioncolumn',
                text: 'Delete',
                width: 100,
                items: [{
                    icon: 'images/deleteEmployee.jpg',
                    tooltip: 'Delete'
                }]
}]

मैं अपने नियंत्रक में actioncolumn के क्लिक ईवेंट को कैसे संभालता हूं?

नियंत्रक का कोड यहां दिया गया है:

Ext.define('ExtApp.controller.Employees', {
    extend: 'Ext.app.Controller',
    refs: [{
        ref: 'employees',
        selector: 'employees'
    }],
    init: function () {
        //reference for the grid's actioncolumn needed here

    }
});

Ext.define('UD.controller.c1', {
    extend: 'Ext.app.Controller',
    refs: [
            {
                selector: 'viewport',
                ref: 'userview'
            }
          ],
    init: function() {
        console.log("initincontroller!!");
        this.control({
            'viewport > panel': {
                render: this.onPanelRendered
            }
        });
    },
    onPanelRendered:function(){
        alert("rendered");
        UD.getApplication().fireEvent('myevent');
    }
});



Ext.define('UD.controller.c2', {
    extend: 'Ext.app.Controller',
    refs: [
            {
                selector: 'viewport',
                ref: 'userview'
            }
          ],
    init: function() {
        console.log("initincontroller!!");
            UD.getApplication().on({
                myevent : this.doSomething
             });
    },
    doSomething:function(){
        alert("controller2");
    }
});