Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,
还可以通过datatable.RejectChanges()回滚,使该行取消删除。
如果要彻底删除datarow,需要Delete()和AccepteChanges()方法同时使用,
结论:再向一个表中设定 列,添加 行的时候,列必须是通过 new DataColumn()得到的,=赋值的会报错;
添加行,比如在insertAt() 行必须是 要添加到的table的 dt.NewRow() 最后添加到那个table的,如果需要其他dt的值,可以通过itemarray进行赋值。
DataTable dt1 = new DataTable();
还可以通过datatable.RejectChanges()回滚,使该行取消删除。
如果要彻底删除datarow,需要Delete()和AccepteChanges()方法同时使用,
结论:再向一个表中设定 列,添加 行的时候,列必须是通过 new DataColumn()得到的,=赋值的会报错;
添加行,比如在insertAt() 行必须是 要添加到的table的 dt.NewRow() 最后添加到那个table的,如果需要其他dt的值,可以通过itemarray进行赋值。
DataTable dt1 = new DataTable();
DataColumn c1 = new DataColumn("name",typeof(string));
DataColumn c2 = new DataColumn("age",typeof(int));
dt1.Columns.Add(c1);
dt1.Columns.Add(c2);
DataRow r1 = dt1.NewRow();
r1["name"] = "zs";
r1["age"] = 25;
DataRow r2 = dt1.NewRow();
r2["name"] = "ls";
r2["age"] = 26;
dt1.Rows.Add(r1);
dt1.Rows.Add(r2);
//DataColumn c3 = c1;
//DataColumn c4 = c2;
DataTable dt2 = new DataTable();
//dt2.Columns.Add(c3);//报错 列name已经属于另外一张表
DataColumn cc1 = new DataColumn("name", typeof(string));
DataColumn cc2 = new DataColumn("age", typeof(int));
dt2.Columns.Add(cc1); dt2.Columns.Add(cc2);
// dt2.Rows.InsertAt(r1, 0);//报错 : 该行已经属于另一个表。
DataRow newr = dt2.NewRow();
newr.ItemArray = r1.ItemArray;
dt2.Rows.InsertAt(newr,0);