右键辅助行新增后 setcelldate 导致原始行数据也被清空
本帖最后由 mtkj 于 2020-4-29 12:21 编辑附件的JS已经上传
你好,这个问题实际上就是一个对象引用的问题,在JS中,要复制一个对象(包括数组),不能仅仅创建一个引用,而是要深度克隆,您代码里只是把get到的viewrow直接放到dataSource中,这样dataSource的两个位置引用的完全是同一个数据。解决方法参考下方代码:
var grid = theGrid
var rowsd = grid.selection.row;
var viewrow = grid.itemsSource.items;
var view = grid.itemsSource
// 这里需要克隆一个全新的viewrow
view.sourceCollection.splice(rowsd+1,0,clone(viewrow));
view.refresh();
var col = grid.columns;
grid.setCellData(rowsd+1, col.index, "");
function clone(Obj){
var buf;
if(Obj instanceof Array){
buf=[];
var i=Obj.length;
while(i--){
buf=clone(Obj);
}
return buf;
}
else if(Obj instanceof Object){
buf={};
for(var k in Obj){
buf=clone(Obj);
}
return buf;
}else{
return Obj;
}
}
页:
[1]