国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中DataTable刪除行的方法分析

2020-01-24 02:24:24
字體:
來源:轉載
供稿:網友

本文實例講述了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#程序設計的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盘锦市| 姜堰市| 铁力市| 台湾省| 平罗县| 龙井市| 凭祥市| 略阳县| 砀山县| 和顺县| 长宁县| 晋宁县| 肃宁县| 沙河市| 新巴尔虎右旗| 松原市| 唐海县| 栖霞市| 凤山市| 伽师县| 阿勒泰市| 揭西县| 曲阜市| 乾安县| 叶城县| 高淳县| 鸡泽县| 肥乡县| 靖安县| 云安县| 潮安县| 衡阳市| 屏山县| 衡阳县| 吴江市| 靖远县| 衡山县| 凯里市| 三都| 凉城县| 满洲里市|