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