在特定位置复制一行

jos*_*sei 1 javascript extjs extjs5

使用网格,我想复制选定的一行。

然后我想在紧跟所选行的网格位置插入该行的副本。

小提琴:https ://fiddle.sencha.com/#fiddle/1hc6

var grid = this.up('grid');
var record = grid.getSelectionModel().getSelection()[0].copy(null);

var store = grid.getStore();
var row = store.indexOf(record);

store.insert(row, record); //store.insert(row + 1, record);?????
Run Code Online (Sandbox Code Playgroud)

我编辑了解决方案

Nel*_*son 5

这归结为变量命名。您调用的变量record实际上是副本。因此,当您针对商店搜索记录时,您的行索引变量返回索引 -1,因此被插入到末尾(可能是商店 API 的默认行为)。

以下更改将得到您想要的:

var record = grid.getSelectionModel().getSelection()[0];
var copy = record.copy(null);
...
var row = store.indexOf(record); // this used to be -1
store.insert(row, copy);
Run Code Online (Sandbox Code Playgroud)