存心大意害死人啊 ,今天发现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;
}
}
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;
}
}