Romeo M.
Romeo M.

Reputation: 3278

Extjs domquery issue

I have a simple grid with one of the columns being a 'download' link placed like this:

{
    header: 'Config files',
    width: 130,
    sortable: false,
    fixed: true,
    renderer: function() {
        return '<a href="javascript:void(0);" class="downloadCfg">Download</a>';
    }
}

This is in the view. Now moving on to the controller I placed a listener on the grid to catch whenever the link is clicked:

init : function() {
    this.control({
        'accountFiles a[class=downloadCfg]': {
            click: function () {
                alert('test');
            }
        }
    });
}

Very basic but it doesnt work. Can it be because the link is created via the 'renderer' function of the grid? Any ideas?

Upvotes: 1

Views: 348

Answers (3)

Ajit Kumar
Ajit Kumar

Reputation: 627

@Romeo

This is how you can grab whether the Download link is clicked or not:

'accountFiles': {
            itemclick: function( thisView, record, item, index, e, eOpts ) {
                var t = e.getTarget('.downloadCfg');

                if (!Ext.isEmpty(t))
                    alert('Download clicked!!');
                else
                    alert('Other item clicked!!');
            }
        }

Once you have identified that the Download link is clicked, you have the record containing the complete record representing the row.

Upvotes: 1

Krzysztof
Krzysztof

Reputation: 16130

I don't know how to fix this issue, but I know another solution.

Create method in GridPanel:

doDownload: function(recordId) {
    var record = this.getStore().data.get(recordId);
    // do something
}

Then create change renderer to:

renderer: function(value, meta, record, rowIndex, colIndex, store) {
    return '<a href="#" onclick="Ext.getCmp(Ext.get(this).parent(\'.x-grid\').id).doDownload(\'' + store.data.getKey(record) + '\')">Download</a>';
}

Action in onclick handler tries to find grid using dom classes.

Upvotes: 1

Andrey Selitsky
Andrey Selitsky

Reputation: 2604

accountFiles a[class=downloadCfg] 

will select all descendant of accountFiles tag which have a tag. And filter them by class attribute.

It seems to me that you confused it with ComponentQuery syntax where you select by component id not by tag.

Upvotes: 0

Related Questions