Зарегистрировать обработчик события click для extjs Grid в модели col - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть одна сетка extjs

this.rentProofInfoGrid = new Ext.grid.EditorGridPanel({
            store : this.rentProofInfoStore,
            id : 'rentProofInfoGrid',
            cm : this.rentProofColModel,
            autoWidth : true,
            height : 300,
            bodyBorder : true,
            clicksToEdit : 1,
            containerScroll : true,
            autoScroll : true,
            iconCls : 'icon-grid',
            tbar : [this.addRentProofAction, this.deleteRentProofAction],
            plugins : [this.attachmentButton, this.deleteAttachment,
                    this.downloadLink],
            sm : this.selModel
        });

, где моя колмодель

this.rentProofColModel = new Ext.grid.ColumnModel([
        this.rentProofInfoMasterCombo, {
            id : 'landLordName',
            header : "Landlord Name",
            dataIndex : 'landLordName',
            width : 140,
            align : 'right',
            editor : new Ext.form.TextField({
                        id : 'landLordName',
                        emptyText : 'Name'
                    }),
            scope : this
        }, {
            id : 'landLordAdd',
            header : "Landlord Address",
            dataIndex : 'landLordAddr',
            width : 200,
            align : 'right',
            editor : new Ext.form.TextField({
                        id : 'landLordAdd',
                        emptyText : 'Address'
                    }),
            scope : this
        }, {
            id : 'landLordPan',
            header : "Landlord PAN",
            dataIndex : 'landLordPAN',
            width : 100,
            align : 'right',
            editor : new Ext.form.TextField({
                        id : 'landLordPan',
                        emptyText : 'PAN Number'
                    }),
            scope : this
        }, {
            id : 'viewDeclaration',
            header : "View Declaration",
            dataIndex : 'viewDeclaration',
            width : 100,
            align : 'right',
            renderer : function(val, p, record) {
                var link = '';
                if (val != null) {
                    link = "<span class='downloadLink' row_id='"
                            + record.data.id
                            + "' style='text-decoration:underline;cursor:pointer;'>"
                            + val + "<span>";
                }
                return link;
            }
        }, this.attachmentButton, this.deleteAttachment]);

в одном столбце "viewDeclaration". Я создаю средство визуализации, чтобы сделать значение dataIndex гиперссылкой.проблема в том, как мне зарегистрировать событие щелчка по щелчку этого промежутка, может ли какой-нибудь один PLZ помочь мне?

Ответы [ 2 ]

0 голосов
/ 23 декабря 2011

Я бы обработал событие cellclick в сетке. Документ (ExtJS 2.2) гласит:

cellclick : ( Grid this, Number rowIndex, Number columnIndex, Ext.EventObject e )

обработайте это событие с помощью такой функции:

function(grid, rowIndex, columnIndex, e) {
    var record = grid.getStore().getAt(rowIndex);  // Get the Record
    var fieldName = grid.getColumnModel().getDataIndex(columnIndex); // Get field name
    var data = record.get(fieldName);
}

Также в этой функции вы можете получить именно то, на что нажал пользователь, выполнив:

e.getTarget('.downloadLink') //returns you an HTMLElement

Когда у вас есть элемент HTML, вы можете в значительной степени выполнить любой тип проверки, который хотите выполнить с ним. Вы даже можете проверить, имеет ли оно свойство "row_id", которое вы указали в рендерере.

0 голосов
/ 23 декабря 2011

вы можете использовать Ext.select для получения списка узлов, соответствующих селектору CSS.

Ext.select('. downloadLink').on('click', function() { alert('bar'); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...