在博客园混了也有几年了。虽然是业余的。但也确实从博客园中学习到不少东西。今天自己也开博了。作为第一篇博客,我就写写自己做业务系统时遇到的问题,和解决办法。还望各位大仙不要喷我哦。
自己做客户端也有些时日了。经常的遇到基础数据的删除问题。好像有不少系统都是不能删除的吧。只是标记一下,不能使用而已。
我想如果是新添加的数据,无关联数据时,物理删除也是无伤大雅的吧。大家看看我的方法吧。其实也是仿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,就说明有关联数据,不能删除。再给出提示即可。