在博客園混了也有幾年了。雖然是業余的。但也確實從博客園中學習到不少東西。今天自己也開博了。作為第一篇博客,我就寫寫自己做業務系統時遇到的問題,和解決辦法。還望各位大仙不要噴我哦。
自己做客戶端也有些時日了。經常的遇到基礎數據的刪除問題。好像有不少系統都是不能刪除的吧。只是標記一下,不能使用而已。
我想如果是新添加的數據,無關聯數據時,物理刪除也是無傷大雅的吧。大家看看我的方法吧。其實也是仿Windows 的回收站功能。還請高手指點哦。
首先看一下圖片吧。窗體中添加DotNotBar的開關控件,並設置過濾條件。刪除時,放到回收站內。在回收站內,再點一下刪除時,會搜索此數據是否有關聯數據,C#+EF示例:
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e) { if (tProductBindingSource.Current != null) { if (!switchButtonItem1.Value && MessageUtil.ShowYesNoAndTips("確認刪除該筆商品數據?刪除後商品將放入商品回收站內!") == DialogResult.Yes) { var one = ((t_Product)tProductBindingSource.Current); one.Enable = false; db.SaveChanges(); } else { try { var one = ((t_Product)tProductBindingSource.Current); var more = db.t_Product.AsNoTracking().Where(p => p.ProductID == one.ProductID).Select(p => new { n = p.s_RKDetail.Count() + p.s_SellDetail.Count() + p.s_Stock.Count() + p.t_ChangeStock.Count() }); if (more.FirstOrDefault().n == 0) { db.t_Product.Remove(one); db.SaveChanges(); } else MessageUtil.ShowWarning("此商品數據,已經關聯庫存記錄,不能物理刪除!但是可以修改為新商品數據,並使用。"); } catch (Exception err) { MessageUtil.ShowError("此商品刪除出錯!可以修改為新商品數據,並使用。錯誤內容為:" + err.Message); } } buttonX1_Click(null, null); } }
其實也就是查找此數據相關聯的其它表行數,並相加,只要不為0,就說明有關聯數據,不能刪除。再給出提示即可。