記錄個自己的低級錯誤!!!!!!!!!!!!!!!!!
今天在對一個表進行刪除,發現以下問題:
先附一段代碼:(方便調試,加了些MessageBox.)
??????????? string deleteID = this.costomerDataGrid[this.costomerDataGrid.CurrentRowIndex, 6].ToString();
?????????? ?this.costomer_RecordTableAdapter.Fill(this.realEstatePDADataSet.Costomer_Record);
??????????? MessageBox.Show("過濾前的dataView集合數:"+this.dataView2.Count.ToString());
??????????? this.dataView2.RowFilter = "客戶編號 = '" +deleteID+ "'";
??????????? //this.dataView1.Sort = "來訪時間";
??????????? MessageBox.Show("過濾條件:" + deleteID);
??????????? MessageBox.Show("過濾后的dataView集合數:"+this.dataView2.Count.ToString());
??????????? this.costomer_RecordBindingSource.EndEdit();
??????????? for (int i = 0; i < this.dataView2.Count; i++)
??????????? {
??????????????? MessageBox.Show("刪除第"+i+"條記錄");
??????????????? this.costomer_RecordBindingSource.RemoveAt(i);
??????????? }
??????????? this.costomer_RecordTableAdapter.Update(this.realEstatePDADataSet.Costomer_Record);
??????????? MessageBox.Show("刪除成功!");
出現問題:表中的記錄沒被清除完全。仔細檢查,發現Data.Count屬性隨著循環刪除,每次比較 i < this.dataView2.Count,Count屬性也是動態變化的。解決辦法:
??????????? string deleteID = this.costomerDataGrid[this.costomerDataGrid.CurrentRowIndex, 6].ToString();
??????????? this.costomer_RecordTableAdapter.Fill(this.realEstatePDADataSet.Costomer_Record);
??????????? MessageBox.Show("過濾前的dataView集合數:"+this.dataView2.Count.ToString());
??????????? this.dataView2.RowFilter = "客戶編號 = '" +deleteID+ "'";
??????????? //this.dataView1.Sort = "來訪時間";
??????????? MessageBox.Show("過濾條件:" + deleteID);
??????????? MessageBox.Show("過濾后的dataView集合數:"+this.dataView2.Count.ToString());
??????????? this.costomer_RecordBindingSource.EndEdit();
??????????? while(this.dataView2.Count!=0)
??????????? {
??????????????? MessageBox.Show("刪除第" + Convert.ToSingle(this.dataView2.Count)+ "條記錄");
??????????????? this.costomer_RecordBindingSource.RemoveAt(this.dataView2.Count-1);
??????????? }
??????????? this.costomer_RecordTableAdapter.Update(this.realEstatePDADataSet.Costomer_Record);
??????????????? MessageBox.Show("刪除成功!");