Ext JS,项目点击监听器似乎不起作用

时间:2015-01-16 09:30:43

标签: javascript extjs

我有一个网格面板,显示我数据库中的所有用户。 我希望我的网格项(行)可以点击,因为当我点击它们时会发生一些事情,但看起来似乎听众没有。

    Ext.define('PRJ.view.Home', {
     extend: 'Ext.panel.Panel',
     alias: 'widget.home',
     title: 'Home',
     layout: 'fit',

     items: [
        {
            xtype: 'gridpanel',
            store: 'Users',
            title: 'Users grid',
            columns: [
                {text: 'Id', dataIndex: 'id' },
                {text: 'Name', dataIndex: 'name', width : 200 }
            ]
        }
    ]

    });


    Ext.define('PRJ.controller.Menu', {
     extend: 'Ext.app.Controller',

     refs: [
         {
            ref: 'centerPanel',
            selector: '#center-panel'
        }
     ],
     stores: ["Users"
     ],


     init: function() {
         this.control({
             'gridpanel': {
                 itemdblclick: this.editUser
             }
         });
     },

     editUser: function() {
         alert('User double clicked');
     },
});

3 个答案:

答案 0 :(得分:1)

这可能就像将itemdblclick更改为rowdblclick一样简单。

我创建了一个小提琴here,显示了一种稍微不同的方法(通过在配置中添加侦听器)。代码如下:

Ext.create('Ext.grid.Panel', {
        title: 'Simpsons',
        store: Ext.data.StoreManager.lookup('simpsonsStore'),
        columns: [{
            text: 'Name',
            dataIndex: 'name'
        }, {
            text: 'Email',
            dataIndex: 'email',
            flex: 1
        }, {
            text: 'Phone',
            dataIndex: 'phone'
        }],
        listeners: {
            rowdblclick: function(grid, record, tr, rowIndex, e, eOpts) {
                alert(record.get("name"));
            }
        },
        height: 200,
        width: 400,
        renderTo: Ext.getBody()
    });

您还应该查看Selection ModelRow Editing

答案 1 :(得分:1)

您可以使用单元格编辑插件在单击时使单元格可编辑。 在你的网格conf中包含这样的内容: 插件:[                         Ext.create(' Ext.grid.plugin.CellEditing',{                             clicksToEdit:1,                             pluginId:' cellEditor'                         })                     ]

答案 2 :(得分:0)

我发现了问题所在。 我得到的答案没有帮助,因为我需要将监听器保留在控制器中,而不是将其移动到视图中。

问题在于我需要将监听器放在home gridpanel

init: function() {
     this.control({
         'home gridpanel': {
             itemdblclick: this.editUser
         }
     });
 },

现在它就像魅力一样。