我需要在运行时将rowstate属性设置为删除,需要将rowstate修改为已删除。如何在运行时将rowstate属性设置为Deleted?
因为我知道row.Delete()方法调用将行状态更改为已删除,但它也删除行。
在这里,我只是想改变的RowState来删除,但数据行不应该被删除:
示例代码:
Delete delete = new Delete()
.from("tb_lib_report_package_link")
.where()
.add().criteria("lib_report_id = :pLibReportId ")
.and().criteria("package_Id IN (" + packageLink + ")")
.endWhere();
drow.AcceptChanges();
drow.Delete();
DataRow[] dra = new DataRow[] { drow };
DbAccessManager accessManager = DbAccessFactory.GetDatabaseAccess(DatabaseType.Oracle, "Data Source=SRV",
"DEV", "dev", this.AppCookieData["UserId"]);
accessManager.ClientId = this.AppCookieData["UserId"];
DbConnection cn = accessManager.CreateConnection();
delete.ParameterSetter = new ParameterSetter((builder, param, index) =>
{
switch (builder.GetColumnName(param))
{
case "pLibReportId":
param.DbType = this.ServerCfgReader.DefaultDBProvider.DBDataAccess.GetDbType(drow["LIB_REPORT_ID"].GetType());
param.Value = drow["LIB_REPORT_ID"];
break;
default:
throw new NotImplementedException();
}
});
accessManager.Delete(delete, dra, cn);
在这我得到异常“已删除行的信息无法通过访问该行“。
会是什么这样做的好处是什么?你想在这里做什么?也显示你目前的一些代码。 – 2014-10-29 13:28:38
请参阅此处我只是想将rowstate修改为在运行时删除。目前我有一个DataRow哪个rowstate被修改,并基于修改后的rowstate我需要在我的框架中调用Delete方法,但框架只处理Delete函数中的Deleted Row状态。 – Jack 2014-10-29 13:31:00
如果你不调用AcceptChanges它仍然在数据表中,并且如果你在变量中有一个对它的引用,那么你仍然可以通过它来访问它的行状态,这是什么意思。 – 2014-10-29 13:34:54