javascript - Extjs 4 cellEditing 插件不适用于多于一个的网格

标签 javascript extjs extjs4

我有一个包含 2 个或更多网格的简单页面,我想使用 CellEditing 插件来编辑这些网格的单元格。

如果我只有一个网格,一切正常,但如果我制作 2 个(或更多)网格,CellEditing 插件将停止工作。

有人知道如何解决这个问题吗?

我做了一个受此问题影响的最小化示例。

在此示例中,您可以尝试向第一个网格添加一行,然后双击以编辑该网格。如您所见,单元格编辑根本不起作用。 如果您在第二个网格中添加和编辑单元格,它就可以工作。

在这里你可以找到jsfiddle中的例子: http://jsfiddle.net/eternasparta/amHRr/

这是javascript代码:

Ext.require([
    'Ext.form.*',
    'Ext.tip.*']);

var store = Ext.create('Ext.data.Store', {
    fields: ['label'],
    data: []
});
Ext.define('AM.view.editpanel.CustomList', {
    extend: 'Ext.container.Container',
    alias: 'widget.sclist',
    layout: {
        type: 'vbox',
        align: 'stretch'

    },
    items: [{
        xtype: 'grid',
        plugins: [],
        selModel: {
            selType: 'cellmodel'
        },
        tbar: [{
            text: 'Add',
            actionId: 'add',
            handler: function (th, e, eArg) {
                var store = th.up('grid').store;
                var r = Ext.create(store.model.modelName);
                store.insert(0, r);

            }
        }],
        height: 200,
        store: store,
        columns: [{
            text: 'Name',
            dataIndex: 'label',
            flex: 1,
            editor: {
                xtype: 'numberfield',
                allowBlank: false
            }
        }, {
            xtype: 'actioncolumn',
            width: 30,
            sortable: false,

            actionId: 'delete',
            header: 'delete',
            items: [{
                tooltip: 'tool'

            }]
        }],
        flex: 1
    }],
    flex: 1,
    initComponent: function () {
        this.items[0].plugins.push(Ext.create('Ext.grid.plugin.CellEditing', {
            clicksToEdit: 2
        }));


        this.callParent(arguments);

        var sto = Ext.create('Ext.data.Store', {
            fields: ['label'],
            data: []
        });
        this.down('grid').bindStore(sto);
        this.down('grid').columns[0].text = 'Name';
        this.down('grid').columns[0].dataIndex = 'label';
    }
});



Ext.onReady(function () {


    Ext.QuickTips.init();

    var grid1 = Ext.create('AM.view.editpanel.CustomList', {
        renderTo: Ext.getBody()
    });
    var grid2 = Ext.create('AM.view.editpanel.CustomList', {
        renderTo: Ext.getBody()
    });
});

感谢任何帮助,谢谢!

最佳答案

只需在 initComponent 中放置对象或数组类型(在您的情况下为项目)的配置:demo .

有关更多信息,请参阅我的回答 here .

关于javascript - Extjs 4 cellEditing 插件不适用于多于一个的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16647336/

相关文章:

javascript - 媒体查询适用于浏览器,但不适用于移动设备

javascript - 如何在 Matter.js 中使物体掉落?

php - php 和 mysql 的 jquery 自动完成功能在 codeigniter 中不起作用

ExtJS Grid 删除行 - 获取选定的行

javascript - 如何在 Extjs 中更改 Treepanel 中访问的节点颜色,就像我们在 html 中一样

ExtJS 4-如何有条件地编辑网格中的单元格?

extjs4 - 当我在日期字段中按下时,如何忽略日期选择器

javascript - AngularJS:ng-show ="user"虚假,ng-show ="!!user"真实?

javascript - ExtJs 检查表单值是否已更改

javascript - 如何在没有循环引用的情况下在 Controller 之间共享对象/方法?