在博客園混了也有幾年了。雖然是業余的。但也確實從博客園中學習到不少東西。今天自己也開博了。作為第一篇博客,我就寫寫自己做業務系統時遇到的問題,和解決辦法。還望各位大仙不要噴我哦。
自己做客戶端也有些時日了。經常的遇到基礎數據的刪除問題。好像有不少系統都是不能刪除的吧。只是標記一下,不能使用而已。
我想如果是新添加的數據,無關聯數據時,物理刪除也是無傷大雅的吧。大家看看我的方法吧。其實也是仿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,就說明有關聯數據,不能刪除。再給出提示即可。