C#中DataTable刪除行的辦法剖析。本站提示廣大學習愛好者:(C#中DataTable刪除行的辦法剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中DataTable刪除行的辦法剖析正文
本文實例講述了C#中DataTable刪除行的辦法,分享給年夜家供年夜家參考之用。詳細完成辦法以下:
本身的刪除例子(drTemp是表,gvSummary是dev 的gridview。單擊右鍵點擊grid刪除):
1、dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle);
2、dtTemp.Rows[gvSummary.FocusedRowHandle].Delete(); dtTemp.AcceptChanges();
在C#中,假如要刪除DataTable中的某一行,年夜致有以下幾種方法:
1.假如只是想刪除datatable中的一行,可以用DataRow的delete,然則必需要刪除後讓DataTable曉得,所以就要用到.AcceptChanges()辦法,緣由是這類刪除只是標識性刪除,就像我們平日在數據庫頂用到的IsDelete字段。
Delete()以後須要datatable.AccepteChanges()辦法確認完整刪除,由於Delete()只是將響應列的狀況標記為刪除,還可以經由過程datatable.RejectChanges()回滾,使該行撤消刪除。
2.完全刪除就要用到datatable的.Rows.Remove(DataRow dr)辦法,同理也只是刪除一行可以,假如要輪回刪除請持續往下看。
3.輪回完全刪除就要用.Rows.RemoveAt(int index)辦法,所以假如你是foreach的喜好者,在此請你換換口胃,還有假如你是for的i++的忠誠fans也願望你能換個思想。先看一下下面法式的正向寫法(毛病的,弗成用)
for (int i = 0, j = dt.Rows.Count; i < j; i++) { if (Convert.ToInt32(dt.Rows[i]["RowID"]) == RowID) dt.Rows.RemoveAt(i); }
這個的毛病在於datatable的RemoveAt()會在刪除後更新dataTable的index,所以你要刪除的index能夠曾經不是你的相符Convert.ToInt32(dt.Rows[i]["RowID"]) == RowID的index了,甚者還會拋出異常,說你拜訪的index不存在。
照樣要慎用datatable.Rows.RemoveAt(i),若要刪除多行,可以持續用Delete(),然後采取AccepteChanges()辦法確認刪除。
應用select辦法:
先把要刪除的記載標志一下,然後select刪除行,實例代碼以下:
for (int i = 0; i < len; i++) { if (((CheckBox)Rp.Items[i].FindControl("CB")).Checked) { dt.Rows[i]["C0"] = 1;//標志要刪除的記載 } } foreach (DataRow r in dt.Select("c0=1")) { r.Delete(); } Rp.DataSource = dt; Rp.DataBind();
感興致的同伙可以測試運轉本文實例以加深懂得,願望本文所述對年夜家C#法式設計的進修有所贊助。