主题:请高手来指点一下原因,OLEDB
我在使用OLEDB时,执行删除操作,使用了oledbCommandbuilder ,删除操作的过程如下 :
private void toolStripButton2_Click(object sender, EventArgs e)
{
if (this.dataGridView1.Rows.Count == 0) return;
if (MessageBox.Show("你真的要删除该行数据吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
try
{
int row = this.dataGridView1.CurrentCell.RowIndex;
this.mdb.ds.Tables[0].Rows[row].Delete();
this.mdb.da.Update(this.mdb.ds.GetChanges());
this.mdb.ds.Clear();
this.mdb.da.Fill(this.mdb.ds);
this.mdb.dc.Close();
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
this.mdb.ds.Clear();
this.mdb.da.Fill(this.mdb.ds);
this.mdb.dc.Close();
}
}
}
在正常情况下能够正确地删除,但是当我把DataGridView中的编号一列(自动编号)的表头点一下,让他以该列重新排序以后,再执行删除,那么他就始终是删除第一行的数据,请高手指点。
在删除后之所以我要重新装入数据,是因为不重新装入就只能执行一次操作,后面再操作就违背了并发原则。
private void toolStripButton2_Click(object sender, EventArgs e)
{
if (this.dataGridView1.Rows.Count == 0) return;
if (MessageBox.Show("你真的要删除该行数据吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
try
{
int row = this.dataGridView1.CurrentCell.RowIndex;
this.mdb.ds.Tables[0].Rows[row].Delete();
this.mdb.da.Update(this.mdb.ds.GetChanges());
this.mdb.ds.Clear();
this.mdb.da.Fill(this.mdb.ds);
this.mdb.dc.Close();
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
this.mdb.ds.Clear();
this.mdb.da.Fill(this.mdb.ds);
this.mdb.dc.Close();
}
}
}
在正常情况下能够正确地删除,但是当我把DataGridView中的编号一列(自动编号)的表头点一下,让他以该列重新排序以后,再执行删除,那么他就始终是删除第一行的数据,请高手指点。
在删除后之所以我要重新装入数据,是因为不重新装入就只能执行一次操作,后面再操作就违背了并发原则。