deleted DataRows just vanishes from DataTable, no way to access them
-
I have a datatable that acts as a DataSource for control. Programmatically I am also deleting some rows from this table using code like foreach (DataRow row in myDataTable.Rows) { if (row["Id"].ToString().CompareTo(myControl.SelectedValue.ToString()) == 0) { row.Delete(); break; } } I am not calling AcceptChanges on datatable. However after this delete, I don’t see any rows that have a status DataViewRowState.Deleted Any ideas what I may be missing?
-
I have a datatable that acts as a DataSource for control. Programmatically I am also deleting some rows from this table using code like foreach (DataRow row in myDataTable.Rows) { if (row["Id"].ToString().CompareTo(myControl.SelectedValue.ToString()) == 0) { row.Delete(); break; } } I am not calling AcceptChanges on datatable. However after this delete, I don’t see any rows that have a status DataViewRowState.Deleted Any ideas what I may be missing?
I have this test code where I can see the same behavior. Can someone point what am I doing wrong here? static void Main(string[] args) { DataTable table = new DataTable(); DataColumn col = new DataColumn("ID", System.Type.GetType("System.Int32")); table.Columns.Add(col); for (int i = 0; i < 10; i++) { DataRow row = table.NewRow(); row["ID"] = i; table.Rows.Add(row); } Console.WriteLine(table.Rows.Count); for (int i = 0; i < table.Rows.Count;i++ ) { if (Convert.ToInt32(table.Rows[i]["ID"]) == 4) { table.Rows[i].Delete(); break; } } Console.WriteLine(table.Rows.Count); DataTable deletedRows = table.GetChanges(DataRowState.Deleted); // This returns NULL, shouldn't it have one row here??? for (int i = 0; i < deletedRows.Rows.Count; i++) { Console.WriteLine("Deleted: " + deletedRows.Rows[i]["ID",DataRowVersion.Original].ToString()); } }
-
I have this test code where I can see the same behavior. Can someone point what am I doing wrong here? static void Main(string[] args) { DataTable table = new DataTable(); DataColumn col = new DataColumn("ID", System.Type.GetType("System.Int32")); table.Columns.Add(col); for (int i = 0; i < 10; i++) { DataRow row = table.NewRow(); row["ID"] = i; table.Rows.Add(row); } Console.WriteLine(table.Rows.Count); for (int i = 0; i < table.Rows.Count;i++ ) { if (Convert.ToInt32(table.Rows[i]["ID"]) == 4) { table.Rows[i].Delete(); break; } } Console.WriteLine(table.Rows.Count); DataTable deletedRows = table.GetChanges(DataRowState.Deleted); // This returns NULL, shouldn't it have one row here??? for (int i = 0; i < deletedRows.Rows.Count; i++) { Console.WriteLine("Deleted: " + deletedRows.Rows[i]["ID",DataRowVersion.Original].ToString()); } }
-
I have a datatable that acts as a DataSource for control. Programmatically I am also deleting some rows from this table using code like foreach (DataRow row in myDataTable.Rows) { if (row["Id"].ToString().CompareTo(myControl.SelectedValue.ToString()) == 0) { row.Delete(); break; } } I am not calling AcceptChanges on datatable. However after this delete, I don’t see any rows that have a status DataViewRowState.Deleted Any ideas what I may be missing?