阅读:3645
回复:6
|
[已解决]H3想通过数据库删除附件,是否有伪删除方法?
h3通过数据库删除附件,是否有伪删除方法?
|
1楼#
发布于:2017-03-03 11:08
帖内置顶 – H3BPM – 2017-03-06 17:07
因代码都已经封装在dll里了,所以我们只能通过执行原保存方法之前干预
昨天晚上代码就写好了,但是没有测试。今天测了一下,发现现实与思路有些差别。 实测后发现SaveDataFields会把附件表的附件数据删掉。 所以我们还是自己新建一个备份附件表 在SaveDataFields之前,保存被删除的附件。 public override void SaveDataFields(MvcPostValue MvcPost, MvcResult result) { if ( this.ActionContext.ActivityTemplate.DisplayName == "申请人申请")//环节判断 { Dictionary<string, string> dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(MvcPost.BizObject.DataItems["附件字段"].V.ToString()); string DelAttachmentIds = dictionary["DelAttachmentIds"];//在页面上被删除附件的Id string sql = @"INSERT INTO 表名 SELECT * FROM OT_Attachment WHERE ObjectID='{0}'"; foreach (string AttachmentID in DelAttachmentIds.Split(';')) { if (AttachmentID != null && AttachmentID != "") { this.ActionContext.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteNonQuery(string.Format(sql, AttachmentID)); } } } base.SaveDataFields(MvcPost, result); } |
|
|
2楼#
发布于:2017-03-03 11:20
帖内置顶 – H3BPM – 2017-03-06 17:07
再补充一句。只能保存已保存的附件。
如果是,在申请页面上,上传了附件,没有点击保存或提交。直接删除的附件无法保存。但附件仍然会留在OT_Attachment表中,只是没有BizObjectId |
|
|
3楼#
发布于:2017-03-01 11:50
什么意思?是只想在表单上看不到吗,实际上在数据库还是存在
|
|
4楼#
发布于:2017-03-01 15:41
|
|
5楼#
发布于:2017-03-03 10:51
代码正在赶来的路上。。。
|
|
|
6楼#
发布于:2017-03-03 11:08
因代码都已经封装在dll里了,所以我们只能通过执行原保存方法之前干预
昨天晚上代码就写好了,但是没有测试。今天测了一下,发现现实与思路有些差别。 实测后发现SaveDataFields会把附件表的附件数据删掉。 所以我们还是自己新建一个备份附件表 在SaveDataFields之前,保存被删除的附件。 public override void SaveDataFields(MvcPostValue MvcPost, MvcResult result) { if ( this.ActionContext.ActivityTemplate.DisplayName == "申请人申请")//环节判断 { Dictionary<string, string> dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(MvcPost.BizObject.DataItems["附件字段"].V.ToString()); string DelAttachmentIds = dictionary["DelAttachmentIds"];//在页面上被删除附件的Id string sql = @"INSERT INTO 表名 SELECT * FROM OT_Attachment WHERE ObjectID='{0}'"; foreach (string AttachmentID in DelAttachmentIds.Split(';')) { if (AttachmentID != null && AttachmentID != "") { this.ActionContext.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteNonQuery(string.Format(sql, AttachmentID)); } } } base.SaveDataFields(MvcPost, result); } |
|
|
7楼#
发布于:2017-03-03 11:17
|
|
|
8楼#
发布于:2017-03-03 11:20
再补充一句。只能保存已保存的附件。
如果是,在申请页面上,上传了附件,没有点击保存或提交。直接删除的附件无法保存。但附件仍然会留在OT_Attachment表中,只是没有BizObjectId |
|
|