gguowang

SqlServer 、API编程、Asp.Net,Winform.......

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
存心大意害死人啊 ,今天发现XTerm中竟然存在这么大的一个Bug啊,删除多条订单时显示删除成功了,到数据库了一看居然记录还在...?  仔细盘查发现删掉的是别的订单写法如下:
private void cmiDelete_Click(object sender, System.EventArgs e)
  {
   try
   {
    string Selects = string.Empty;
    for(int i=0;i<Dt.Rows.Count;i++)
    {
     if(this.dgStat.IsSelected(i))
     {
      Selects += i.ToString() + ',';
     }
    }
    string[]iDels = Selects.Trim(',').Split(',');
    int iDeleted = iDels.Length;
    if(MessageBox.Show("您确认要把这" + iDeleted + "条订单从服务器的数据库中删除么 ?", "提醒确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1) == DialogResult.OK)
    {
     for(int i=0;i<iDeleted;i++)
     {
      Dt.Rows.Find(Dt.Rows[Convert.ToInt32(iDels[i])][0].ToString()).Delete();
     }
     if(Global.oMainForm.Rem.SetTab(Dt.GetChanges(DataRowState.Deleted),"HOrder",Global.LoginID))
     {
      Dt.AcceptChanges();
      MessageBox.Show("恭喜您,成功删除了:" + iDeleted + "条订单!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1);
     }
     else
     {
      Dt.RejectChanges();
      MessageBox.Show("对不起,订单删除失败 !请检查网络...","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1);
     }
    }
   }
   catch{return;}
  }

这写法中每次都是从Dt中进行删除,删除的索引是Dt中的索引 !
正确写法如下:
private void cmiDelete_Click(object sender, System.EventArgs e)
  {
   try
   {
    if(MessageBox.Show("您确认要把这些订单从服务器的数据库中删除么 ?", "提醒确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1) == DialogResult.OK)
    {
     DataView dv = (DataView)dgOrders.DataSource;
     int iCount = dv.Count < Dt.Rows.Count?dv.Count:Dt.Rows.Count;
     string Selected = string.Empty;
     for(int i=0;i<iCount;i++)
     {
      if(this.dgOrders.IsSelected(i))
      {
       Selected += dgOrders[i,0].ToString() + ",";
      }
     }
     string[]iDels = Selected.TrimEnd(',').Split(',');
     for(int i=0;i<iDels.Length;i++)
     {
      Dt.Rows.Find(iDels[i]).Delete();
     }
     if(Global.oMainForm.Rem.SetTab(Dt.GetChanges(),"AirOrder",Global.LoginID))
     {
      Dt.AcceptChanges();
      MessageBox.Show("恭喜您,已经成功删除了这些订单!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information,MessageBoxDefaultButton.Button1);
     }
     else
     {
      Dt.RejectChanges();
      MessageBox.Show("对不起,订单删除失败 !请检查网络...","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1);
     }
    }
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.Message);return;
   }
  }
posted on 2007-12-11 18:26  gguowang  阅读(425)  评论(0编辑  收藏  举报