Extjs网格与rowbody按钮处理程序

时间:2017-02-20 20:02:42

标签: extjs4.2

我在extjs 4.2.1中有一个gridpanel,我在其上使用ftype rowbody为每一行添加其他元素。在这种情况下,我在每行添加一行按钮(标签)。

aa=

因此标记在行中正确显示,但是我想要将侦听器(单击处理程序)添加到这些单独的标记中。这可能是使用rowbody还是我应该使用其他方法添加这些标签

1 个答案:

答案 0 :(得分:0)

是的,您可以使用某些全局范围添加点击处理程序。 我的建议是为你的网格类定义一个静态处理程序:

Ext.define('MyApp.view.MyGrid', {
    extend: 'Ext.grid.Panel',
    xtype: 'orderlinesgrid',
    requires: [
        'Ext.grid.feature.RowBody'
    ],

    statics: {
        onTagClick: function(btn, tag) {
            // Click handler code...
        }
    }

    features: [{
        ftype: 'rowbody',
        getAdditionalData: function(data, idx, record, orig) {
            var headerCt = this.view.headerCt
            var colspan  = headerCt.getColumnCount()
            var rowData = ''
            record.data.tags.forEach(function(tag) {
                rowData += '<button class="tagDiv" onclick="MyApp.view.MyGrid.onTagClick(this,\'' + tag.name + '\')">' + tag.name + '</button>'
            })

            // Usually you would style the my-body-class in CSS file
            return {
                rowBody: rowData,
                rowBodyCls: 'tagRow',
                rowBodyColspan: colspan
            }
        }
    }, {
        ftype: 'rowwrap'
    }],