DataTable中Rows的add和Import区别

来源:互联网 发布:pixel 中文网 网络 x 编辑:程序博客网 时间:2024/04/29 17:13

 

来自:http://zhidao.baidu.com/question/166913917.html?push=ql
DataTable.ImportRow 方法 将 DataRow  复制到 DataTable  中,保留任何属性设置以及初始值和当前值。调用 NewRow  时,将使用现有的表架构向表中添加一行,并为该行填充默认值,同时将 DataRowState  设置为 Added。调用 ImportRow  将保留现有的 DataRowState  以及该行中的其他值。如果作为参数传递的 DataRow 处于分离状态,则忽略它,并且不引发异常。---------------------DataRowCollection.Add 方法 (DataRow)将指定的 DataRow  添加到 DataRowCollection  对象中。若要创建新的 DataRow,必须使用 DataTable  类的 NewRow  方法。当您使用 NewRow  方法时,新的 DataRow  对象通过父级 DataTable  的架构返回。当您创建了 DataRow  对象并为它的每个列设置值之后,使用 Add  方法将该对象添加到集合中。如果用户在 RowChanging 事件中生成异常,则生成异常。如果发生异常,则不向表中添加行。 

回答者: LighT_BlaCk - 八级   2010-7-14 13:17

DataRow是有状态的,Add方法意思是新添加的一行,那么通过此方法添加到DataTable时状态就是Added,刚添加进去的而对于其他状态的行,比如修改过的行,删除的行,提交过的行等等使用Import方式的话,会保留原来的状态,而不是像Add一样是新添加进去的Adapter就是根据Row的状态进行操作的,你最好能理解每次修改行数据的时候都会影响行的状态,这样有记录的时候才能根据情况往数据库添加或者修改 补充:可以保存增加状态,只是Add是添加新的行,而Import是导入,这个你必须理解RowState才行,Add进去的都是新的行,比如你在食堂吃饭拿包子,那算Add进去的,新的,但是吃别人剩下的包子那是Import的,即使别人没吃看起来是新的,但是他会保留现有的包子的状态,不知道能解释明白不能