Show image icon in a grid panel cell in extjs 4

extjs, extjs4

Solution

It was so simple. I just changed the resource link like this and it works. It is solved. Here is the code

 Ext.define('Ext4Example.view.attendence.Datagrid' ,{
    extend: 'Ext.grid.Panel',
    alias : 'widget.datagrid',
    layout: 'fit',
    border: true,
    viewConfig: {
        stripeRows: true,
        forceFit: true,
        emptyText:'No Records to display'
    },   
    hideHeaders: false,
    initComponent: function() {

        this.store = 'Attendences';
        this.width = 429;      
        this.columns = [


        {
            text: 'Status',
            width: 40,
            align: 'center',
            renderer: function(value, metaData, record, row, col, store, gridView){
                            var intime = record.get('intime');
                            var outtime = record.get('outtime');
                            var a = this.checkUncheck(intime, outtime);
                            if(a >= 2)
                               { //change the resource below :
                                    return '<img src="${resource(dir: 'images', file: 'TIC01001.png')}" />';
                            }else{
                                return '<img src="${resource(dir: 'images', file: 'DEL01005.png')}" />';
                            }
                        }
        },{
            text: 'Approval',
            flex: 1,
            align: 'left',
            renderer: function(value, metaData, record, row, col, store, gridView){
                            var intime = record.get('intime');
                            var outtime = record.get('outtime');
                            var a = this.checkUncheck(intime, outtime);
                            if(a >= 2)
                               {
                                     return '<input type="checkbox" checked="true" />';

                            }else{
                                return '<input type="checkbox" />';
                            }
                        },    
            }
        ];

        this.callParent(arguments);
    },
    checkUncheck: function(intime, outtime){
        var count = 0;
        var inhour = intime.getHours() * 60 *60 * 1000;
        var inminute = intime.getMinutes() * 60 * 1000;
        var insecond = intime.getSeconds() * 1000;
        var inmillisec = inhour + inminute + insecond;

        var nine = 9 * 60 * 60 * 1000;
        var five = 5 * 60 * 1000;
        var checkin = nine + five;
        if(checkin >= inmillisec){
            count+=1;
        }
        var outhour = outtime.getHours() * 60 * 60 * 1000;
        var outminute = outtime.getMinutes() * 60 * 1000;
        var outsecond = outtime.getSeconds() * 1000;
        var outmillisec = outhour + outminute + outsecond;

        var six = 18 * 60 * 60 * 1000;
        if(outmillisec >= six){
            count+=1;
        }
        return count;
    }
});

Problem

I want to show a icon in my grid which column name is status. And the icon is web-inf/images/iconname.png But I am not being able to do it. Can anyone please help me on this? My code is given below: ``` Ext.define('Ext4Example.view.attendence.Datagrid', { extend: 'Ext.grid.Panel', alias: 'widget.datagrid', layout: 'fit', border: true, viewConfig: { stripeRows: true, forceFit: true, emptyText: 'No Records to display' }, hideHeaders: false, initComponent: function () { this.store = 'Attendences'; this.width = 429; this.columns = [{ text: 'Status', width: 40, align: 'center', renderer: function (value, metaData, record, row, col, store, gridView) { var intime = record.get('intime'); var outtime = record.get('outtime'); var a = this.checkUncheck(intime, outtime); if (a >= 2) { return '<img src="images/TIC01001.png" />'; } else { return 'something'; } } }, { text: 'Approval', flex: 1, align: 'left', renderer: function (value, metaData, record, row, col, store, gridView) { var intime = record.get('intime'); var outtime = record.get('outtime'); var a = this.checkUncheck(intime, outtime); if (a >= 2) { return '<input type="checkbox" checked="true" />'; } else { return '<input type="checkbox" />'; } }, }]; this.callParent(arguments); }, checkUncheck: function (intime, outtime) { var count = 0; var inhour = intime.getHours() * 60 * 60 * 1000; var inminute = intime.getMinutes() * 60 * 1000; var insecond = intime.getSeconds() * 1000; var inmillisec = inhour + inminute + insecond; var nine = 9 * 60 * 60 * 1000; var five = 5 * 60 * 1000; var checkin = nine + five; if (checkin >= inmillisec) { count += 1; } var outhour = outtime.getHours() * 60 * 60 * 1000; var outminute = outtime.getMinutes() * 60 * 1000; var outsecond = outtime.getSeconds() * 1000; var outmillisec = outhour + outminute + outsecond; var six = 18 * 60 * 60 * 1000; if (outmillisec >= six) { count += 1; } return count; } }); ```

Original source