我前面用dt.Rows.Remove (i)一行数据
用
DataTable dt_D = dt.GetChanges(DataRowState.Deleted);但是无法获取delete的行?
完整的代码是
if(MyBox.Checked)
{
dt.Rows.Remove(dt.Rows[i]);
//dt.Rows.Add(dt.NewRow());
}
}
ViewState["source"] = dt;
this.dg_Modify.DataSource = ViewState["source"];
this.dg_Modify.DataBind();DataTable dt = (DataTable)ViewState["source"];DataTable dt_D = dt.GetChanges(DataRowState.Deleted);//该dt_D为空
用
DataTable dt_D = dt.GetChanges(DataRowState.Deleted);但是无法获取delete的行?
完整的代码是
if(MyBox.Checked)
{
dt.Rows.Remove(dt.Rows[i]);
//dt.Rows.Add(dt.NewRow());
}
}
ViewState["source"] = dt;
this.dg_Modify.DataSource = ViewState["source"];
this.dg_Modify.DataBind();DataTable dt = (DataTable)ViewState["source"];DataTable dt_D = dt.GetChanges(DataRowState.Deleted);//该dt_D为空
Table.Rows.Remove 方法是把一行从 Rows 集合中删除
Table.Rows[i].Delete( ) 方法只是把一个行的状态设置为删除状态,但并没有从 Rows 集合中给删除。所以当你调用 Table.Rows.Remove( i ) 方法后,在调用 Table.GetChanges 方法来取得删除的行,肯定是取不到被删除的行,而使用Table.Rows[i].Delete( )方法删除行就可以取到。
而是使用dt.Rows[i].Delete( );
foreach(DataRow dr in dt_D.Rows)
{
strSql = "use "+wuser.CurrentCorpDB +" delete AssetDeptBorrow_detail where nvrAssetBorrowNo='"+txb_Number.Text.ToString() +"' and "+"nvrAssetNo='" + dr[0].ToString().Trim()+"'";
}
就抱错误
System.Data.DeletedRowInaccessibleException: Deleted row information cannot be accessed through the row. at System.Data.DataRow.GetDefaultRecord() at System.Data.DataRow.GetRecordFromVersion(DataRowVersion version) at System.Data.DataRow.get_Item(DataColumn column, DataRowVersion version) at System.Data.DataRow.get_Item(DataColumn column) at System.Data.DataRow.get_Item(Int32 columnIndex) at CECERP.IE.Asset.AssetTransfer.AssetDeptBorrow.Save()
用了dt.Rows[i].Delete( );DataTable dt_D = dt.GetChanges(DataRowState.Deleted);
后无法用
dr[0].ToString()
是怎么回事?
strSql = "use " + wuser.CurrentCorpDB + " delete AssetDeptBorrow_detail where nvrAssetBorrowNo = '" + txb_Number.Text.ToString() + "' and " + nvrAssetNo = '" + dr[0].ToString().Trim() + "' ";
dt_D.AcceptChanges( );