如何复制DataRow(dataTabel中的行)

由于需要对dataTabel中的行进行上移和下移操作:

row 1      行号0

row2       行号1

row3       行号2

例如将row3上移一行,即row2和row3对调位置。

思路:将row3复制出来,删除row3,在第二行插入row3。

复制row3的方法是: DataRow DR1 = dataTabel.Rows[2];

删除row3:dataTabel.Rows.RemoveAt(2);     //此行将DR1 的内容给删除了

将DR1插入第二行:DT1.Rows.InsertAt(DR1, 2-1);      //插入的是空行

所以上述操作无法完成任务,原因就是DataRow 是引用类型,你删除目标行时,你意图复制的行内容也被删除了。

另想办法,新建一个dataTabel2,然后把行复制到新表,再将dataTabel2的行插入到dataTabel。

还是不行,插入时,提示行已存在于另一个dataTabel,不能插入。想想也是,如果能插入,dataTabel2不就少了一行,结构不就被破坏了嘛。

复制行的方法:

DataTabel dataTabel2= dataTabel.clone();//必须先复制表的架构,使具有相同的的列或关系!

DataRow DR2 =dataTabel2 . NewRow();

DR2.ItemArray = DR1.ItemArray;

既然不能将其他表的行插入本表,只能想着从本表新建一行,然后插入到相应位置了。于是,问题解决了。一波三折,特记录之。

            //将要上移的行
                DataRow DR1 = DT1.Rows[intCurrentRow];

                //在当前表中创建一个新行,并把要移动的行的内容复制到新行
                DataRow DR2 = DT1.NewRow();
                DR2.ItemArray = DR1.ItemArray;

                //开始移动,删除要上移的行,再将新行插入到原位置的上一行
                DT1.Rows.RemoveAt(intCurrentRow);
                DT1.Rows.InsertAt(DR2, intCurrentRow-1);

  

借鉴以下思想:

DataRow复制一行到另一个DataTable

http://www.cnblogs.com/pains/archive/2007/11/22/969003.html

下面两个方法是DataRow复制一行到另一个DataTable的,直接Add会出错“此行已属于另一个表”,其实以前就知道怎么做的,可每次要用到的时候还是犯糊涂,这次把它们记下来。
1.用DataRow.ItemArray
DataTable t=new DataTable();
DataRow r=t.NewRow();
r.ItemArray=oldRow.ItemArray;
t.Rows.Add(r);

2.用DataTable.ImportRow()
t.ImportRow(oldRow);

时间: 2024-12-19 21:55:01

如何复制DataRow(dataTabel中的行)的相关文章

C#中删除DataTable中的行的方法

1.在C#中,如果要删除DataTable中的某一行,大约有以下几种办法: •使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index):可以直接删除行•datatable.Rows[i].Delete().Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消

需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP

需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 因为翻译当然要选择行数少的来翻译,翻译PG文档 https://github.com/postgres-cn/pgdoc-cn/wiki/check9.3grep  -E  "共[0-9]{2}行"  check9.3 [[email protected] ~]# grep  -E  "共[0-9]{2}行"  check9.3 |wc -l32 打开SecureCRT软件 -> Options

[数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁

注明: 本文转载自http://www.hollischuang.com/archives/914 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎).表级锁(MYISAM引擎)和页级锁(BDB引擎 ). 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁.行级锁能大大减少数据库操作的冲突.其加锁粒度最小,但加锁的

将文本框内容添加到表格中的行代码实例

将文本框内容添加到表格中的行代码实例:在实际操作中,往往需要将文本框中的内容添加到表格的行中或者类似的情况,下面就通过一个实例介绍一下如何实现此效果,希望能够对需要的朋友有所帮助,代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/&

dojo中表格行隐藏出错

1.错误描述 TypeError:role._by_idx[e.rowIndex].hide is not a function           (54 out of range 3) 2.错误原因 3.解决办法 dojo中表格行隐藏出错,布布扣,bubuko.com

57 利用sed处理windows和Unix文档中的行结束符

UNIX和DOS/Windows系统的纯文本格式的换行方式是不同的,基于DOS/Windows的文本文件在每一行末尾有一个CR(回车)和LF(换行),而UNIX文本只有一个换行. 如果想将一个Unix文本转换为Windows文本,可以使用如下的sed命令行 sed -e 's/$/\r/' myunix.txt > mywin.txt 在该脚本中,'$'规则表达式将与行的末尾匹配,而'\r'告诉sed在其之前插入一个回车.在换行之前插入回车,立即,每一行就以CR/LF结束. 虽然很多程序不在乎D

定位表中的行数据存放于哪一个具体的datafile上

副标题:用一个PL/SQL查出表中的行数据存放在哪个具体的datafile中 经常有遇到做DBA的朋友问,该如何知道自己插入的某一行数据,是存在了数据库中的哪一个数据文件(datafile)上了,回答是肯定可以的.在此,就将该方法写出来供更多的朋友使用. 1.正常查询步骤 1.1.先查到表上行数据的ROWID select rowid from tivoli.test_db_avg1 where rownum =1 输出值:   AAAQ0mAAEAAAAhLAAA 1.2.根据ROWID定位到

【Ubuntu】Linux中ed行编辑器的使用

ed编辑器 打开ed编辑器 ed:新建一个文件 ed filename:编辑一个已经存在的文件 ed编辑器指令 激活ed命令后进入的是ed编辑器的命令行状态,下面是几条常用指令 a - 在文件的末尾添加新内容 i - 在文件的最后一行之前插入新内容 o - 把文件输入的最后一行(无论是原来存在的还是插入的)替换成新内容 . - 退出编辑文件模式,进入命令行状态 w (filename) - 保存文件 q - 退出ed编辑器 [Ubuntu]Linux中ed行编辑器的使用,布布扣,bubuko.c

CSS中的行内标签变成块级标签

大家都知道,CSS中的行内标签(span,i,b等等),是不能设置宽高或者margin-top;margin-bottom;但是在设置了display为block或者inline-block的情况下是可以设置的,这就是常见的行内元素转化为块级元素: 今天给大家分享的是自己在案例中看到的小技巧.给行内标签添加position:absolute或者float中的设置,行内元素是会被默认转成块级元素!!!