Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > RowData >
Clone

Clone克隆行.将当前行完全复制一份并新增到DataTableHelp中,并将复制行返回。默认情况下自增长ID列是不会一起复制的,这个会根据规则自动生成,防止强制赋值引起冲突。

 参数名称  说明
 donotCloneCols 字符串集合类型,可选参数。不想克隆的列,如果不添加表示要克隆所有列。如果添加了,则添加的列不会被复制,在一些有冲突的场景下,此参数非常有用。

示例:

Vb.Net
Dim tbl As SmGrid=Proj.CurrentSmGrid
If tbl Is Nothing Then Return
Dim dr As RowData=tbl.CurrentRowData
If dr Is Nothing Then Return

'先打印之前的行数据
Proj.MsgDebug.Add("之前的数据:{0}",String.Join("|", dr.BaseRow.ItemArray))
'普通地克隆,除了自增长ID外都是一样的。
Dim drClone As RowData=dr.Clone()
'打印克隆后的行数据
Proj.MsgDebug.Add("克隆的数据:{0}",String.Join("|", drClone.BaseRow.ItemArray))

Dim lst As New List(Of String)
lst.Add("订单号")
lst.Add("单价")
lst.Add("订单状态")

drClone=dr.Clone(lst)
Proj.MsgDebug.Add("去除部分列克隆的数据:{0}",String.Join("|", drClone.BaseRow.ItemArray))

'返回结果:之前的数据:|9|9|产品05|客户01|业务员02|35.5|661|23465.5|2019-01-04 0:00:00|8|3|五|23465.5
'返回结果:克隆的数据:|9|-1|产品05|客户01|业务员02|35.5|661|23465.5|2019-01-04 0:00:00|8|3|五|23465.5
'返回结果:去除部分列克隆的数据:|9|-2|产品05|客户01|业务员02||661|23465.5|2019-01-04 0:00:00|||五|23465.5

C#
SmGrid tbl = Proj.CurrentSmGrid;
if (tbl == null)
    return;
RowData dr = tbl.CurrentRowData;
if (dr == null)
    return;

// 先打印之前的行数据
Proj.MsgDebug.Add("之前的数据:{0}", string.Join("|", dr.BaseRow.ItemArray));
// 普通地克隆,除了自增长ID外都是一样的。
RowData drClone = dr.Clone();
// 打印克隆后的行数据
Proj.MsgDebug.Add("克隆的数据:{0}", string.Join("|", drClone.BaseRow.ItemArray));

List<string> lst = new List<string>();
lst.Add("订单号");
lst.Add("单价");
lst.Add("订单状态");

drClone = dr.Clone(lst);
Proj.MsgDebug.Add("去除部分列克隆的数据:{0}", string.Join("|", drClone.BaseRow.ItemArray));

//返回结果:之前的数据:|9|9|产品05|客户01|业务员02|35.5|661|23465.5|2019-01-04 0:00:00|8|3|五|23465.5
//返回结果:克隆的数据:|9|-1|产品05|客户01|业务员02|35.5|661|23465.5|2019-01-04 0:00:00|8|3|五|23465.5
//返回结果:去除部分列克隆的数据:|9|-2|产品05|客户01|业务员02||661|23465.5|2019-01-04 0:00:00|||五|23465.5