source: [view]
try{
var g = this.grid,
s = g.store,
rowCnt = g.rowCount,
mapping = {},
obj = {idx: 0},
newRows = [], i,
_this = this;
var len = rowsToMove.length;
for(i = targetPos; i < g.rowCount; ++i){
mapping[i] = i + len;
}
if(s.getFeatures()['dojo.data.api.Write']){
if(sourceGrid){
var srcg = sourceGrid,
srcs = srcg.store,
thisItem;
for(i = 0; !thisItem; ++i){
thisItem = g._by_idx[i];
}
var attrs = s.getAttributes(thisItem.item);
var rowsToFetch = [];
dojo.forEach(rowsToMove, function(rowIndex, i){
var item = {};
var srcItem = srcg._by_idx[rowIndex];
if(srcItem){
dojo.forEach(attrs, function(attr){
item[attr] = srcs.getValue(srcItem.item, attr);
});
item = _this.args.setIdentifierForNewItem(item, s, rowCnt + obj.idx) || item;
try{
s.newItem(item);
newRows.push(targetPos + i);
mapping[rowCnt + obj.idx] = targetPos + i;
++obj.idx;
}catch(e){
console.log("insertRows newItem:",e,item);
}
}else{
rowsToFetch.push(rowIndex);
}
});
}else if(rowsToMove.length && dojo.isObject(rowsToMove[0])){
dojo.forEach(rowsToMove, function(rowData, i){
var item = _this.args.setIdentifierForNewItem(rowData, s, rowCnt + obj.idx) || rowData;
try{
s.newItem(item);
newRows.push(targetPos + i);
mapping[rowCnt + obj.idx] = targetPos + i;
++obj.idx;
}catch(e){
console.log("insertRows newItem:",e,item);
}
});
}else{
return;
}
g.layer("rowmap").setMapping(mapping);
s.save({
onComplete: function(){
g._refresh();
setTimeout(function(){
dojo.publish("dojox/grid/rearrange/insert/" + g.id, ["row", newRows]);
}, 0);
}
});
}
}catch(e){
console.log("insertRows:",e);
}