Grid ExtJS:在网格中移动记录

Grid ExtJS:在网格中移动记录,grid,extjs4,record,move,Grid,Extjs4,Record,Move,我在ExtJS上有一个简单的网格,希望用户能够将记录从其原始位置移动。 当用户双击一条记录时,会出现一个包含组合框的小窗口,他可以在组合框上选择一个值,然后单击保存按钮应用更改。 然而,它不起作用,我在不同的论坛上搜索了许多解决方案,但似乎没有一个有效。要么什么也不发生,要么在网格的末尾添加一个未定义的行。以下是我使用的基本代码: onEditRank: function(view, cell, cellIndex, record, row, rowIndex, e) {

我在ExtJS上有一个简单的网格,希望用户能够将记录从其原始位置移动。 当用户双击一条记录时,会出现一个包含组合框的小窗口,他可以在组合框上选择一个值,然后单击保存按钮应用更改。 然而,它不起作用,我在不同的论坛上搜索了许多解决方案,但似乎没有一个有效。要么什么也不发生,要么在网格的末尾添加一个未定义的行。以下是我使用的基本代码:

onEditRank: function(view, cell, cellIndex, record, row, rowIndex, e)
        {
            var reditor = Ext.create('CMS.view.Views.RankEditor', {id: 'reditorView'});
            var form = reditor.down('form');
            var oldPos = this.getFlatrq().getView().indexOf(record);
            var grStore = this.getGridRnkStoreStore();

            var i;
            var data = [];
            for(i = 1; i <= CMS.global.Variables.limit + 1; i++)
            {
                data.push(i);
            }

            var combo = Ext.create
            (
                'Ext.form.field.ComboBox',
                {
                    fieldLabel: 'Rank',
                    itemId: 'cmbRank',
                    store: data
                }
            );
            var saveRnk = Ext.create
            (
                'Ext.button.Button',
                {
                    text: 'Save',
                    handler: function()
                    {
                    }
                }
            );
            form.add(combo);
            form.add(saveRnk);

            reditor.show();
        }
这3个处理程序在我的网格末尾插入了未定义的行。我显示了oldPos和combo.getValue的值,它们是正确的,我还显示了删除前后的记录变量,因为我认为它可能会被销毁,但事实并非如此。我还尝试添加移动函数来存储和调用它:

'CMS.store.GridRnkStore', 
    {
        extend: 'Ext.data.Store',
        model: 'CMS.model.GridRnkModel',
        autoLoad: false,
        filterOnLoad: true,
        autoSync: true,
        move: function(from, to)
        {
            console.log(from + " " + to);
            var r = this.getAt(from);
            this.data.removeAt(from);
            this.data.insert(to, r);
            this.fireEvent("move", this, from, to);
        },

    }
);
但它也不起作用,实际上它什么也没做。我在move函数中放了一些console.log,看看它是否被调用,是否有正确的参数。我没有主意了,任何帮助都将不胜感激。 谢谢。

尝试将store的private move参数设置为true。删除:


这是一个很好的观点,我不知道这个原型删除,但它仍然失败。。。在我的网格末尾,仍然有一个未定义的行不知从何处出现。是否刷新了网格视图?可能它已删除,但视图未刷新。
'CMS.store.GridRnkStore', 
    {
        extend: 'Ext.data.Store',
        model: 'CMS.model.GridRnkModel',
        autoLoad: false,
        filterOnLoad: true,
        autoSync: true,
        move: function(from, to)
        {
            console.log(from + " " + to);
            var r = this.getAt(from);
            this.data.removeAt(from);
            this.data.insert(to, r);
            this.fireEvent("move", this, from, to);
        },

    }
);
remove: function(records, /* private */ isMove, silent)