C#中DataTable刪除行的方法分析
本文實(shí)例講述了C#中DataTable刪除行的方法,分享給大家供大家參考之用。具體實(shí)現(xiàn)方法如下:
自己的刪除例子(drTemp是表,gvSummary是dev 的gridview。單擊右鍵點(diǎn)擊grid刪除):
1、dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle);
2、dtTemp.Rows[gvSummary.FocusedRowHandle].Delete(); dtTemp.AcceptChanges();
在C#中,如果要?jiǎng)h除DataTable中的某一行,大致有以下幾種辦法:
1.如果只是想刪除datatable中的一行,可以用DataRow的delete,但是必須要?jiǎng)h除后讓DataTable知道,所以就要用到.AcceptChanges()方法,原因是這種刪除只是標(biāo)識(shí)性刪除,就像我們通常在數(shù)據(jù)庫(kù)中用到的IsDelete字段。
Delete()之后需要datatable.AccepteChanges()方法確認(rèn)完全刪除,因?yàn)镈elete()只是將相應(yīng)列的狀態(tài)標(biāo)志為刪除,還可以通過datatable.RejectChanges()回滾,使該行取消刪除。
2.徹底刪除就要用到datatable的.Rows.Remove(DataRow dr)方法,同理也只是刪除一行可以,如果要循環(huán)刪除請(qǐng)繼續(xù)往下看。
3.循環(huán)徹底刪除就要用.Rows.RemoveAt(int index)方法,所以如果你是foreach的愛好者,在此請(qǐng)你換換口味,還有如果你是for的i++的忠實(shí)fans也希望你能換個(gè)思維。先看一下上面程序的正向?qū)懛ǎㄥe(cuò)誤的,不可用)
for (int i = 0, j = dt.Rows.Count; i < j; i++) { if (Convert.ToInt32(dt.Rows[i]["RowID"]) == RowID) dt.Rows.RemoveAt(i); }
這個(gè)的錯(cuò)誤在于datatable的RemoveAt()會(huì)在刪除后更新dataTable的index,所以你要?jiǎng)h除的index可能已經(jīng)不是你的符合Convert.ToInt32(dt.Rows[i]["RowID"]) == RowID的index了,甚者還會(huì)拋出異常,說你訪問的index不存在。
還是要慎用datatable.Rows.RemoveAt(i),若要?jiǎng)h除多行,可以連續(xù)用Delete(),然后采用AccepteChanges()方法確認(rèn)刪除。
使用select方法:
先把要?jiǎng)h除的記錄標(biāo)記一下,然后select刪除行,實(shí)例代碼如下:
for (int i = 0; i < len; i++) { if (((CheckBox)Rp.Items[i].FindControl("CB")).Checked) { dt.Rows[i]["C0"] = 1;//標(biāo)記要?jiǎng)h除的記錄 } } foreach (DataRow r in dt.Select("c0=1")) { r.Delete(); } Rp.DataSource = dt; Rp.DataBind();
感興趣的朋友可以測(cè)試運(yùn)行本文實(shí)例以加深理解,希望本文所述對(duì)大家C#程序設(shè)計(jì)的學(xué)習(xí)有所幫助。
- C#使用DataSet Datatable更新數(shù)據(jù)庫(kù)的三種實(shí)現(xiàn)方法
- C#中DataTable排序、檢索、合并等操作實(shí)例
- C#中把Datatable轉(zhuǎn)換為Json的5個(gè)代碼實(shí)例
- C#對(duì)DataTable里數(shù)據(jù)排序的方法
- c#將list類型轉(zhuǎn)換成DataTable方法示例
- C#中datatable去重的方法
- C#將DataTable轉(zhuǎn)換成list的方法
- C#從DataTable獲取數(shù)據(jù)的方法
- C#實(shí)現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
- c#中合并DataTable重復(fù)行的值
- C#中csv文件與DataTable互相導(dǎo)入處理實(shí)例解析
- C# DataTable中Compute方法用法集錦(數(shù)值/字符串/運(yùn)算符/表等操作)
相關(guān)文章
C#使用時(shí)序數(shù)據(jù)庫(kù)InfluxDB的教程詳解
InfluxDB是一個(gè)開源的時(shí)序數(shù)據(jù)庫(kù),可以自動(dòng)處理時(shí)間序列數(shù)據(jù),這篇文章主要為大家詳細(xì)介紹了C#如何使用InfluxDB,感興趣的小伙伴可以跟隨小編一起了解下2023-11-11C# Lambda表達(dá)式select()和where()的區(qū)別及用法
這篇文章主要介紹了C# Lambda表達(dá)式select()和where()的區(qū)別及用法,select在linq中一般會(huì)用來提取最后篩選的元素集合,在lambda表達(dá)式中通常用where得到元素集合,需要的朋友可以參考下2023-07-07C#利用PrintDocument定制打印單據(jù)的小例子
這篇文章主要給大家介紹了關(guān)于C#利用PrintDocument定制打印單據(jù)的小例子,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法
這篇文章主要介紹了C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03利用Distinct()內(nèi)置方法對(duì)List集合的去重問題詳解
這篇文章主要給大家介紹了關(guān)于利用Distinct()內(nèi)置方法對(duì)List集合的去重問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06C#中枚舉類型和radiobox關(guān)聯(lián)操作的方法
這篇文章主要介紹了C#中枚舉類型和radiobox關(guān)聯(lián)操作的方法,實(shí)例分析了C#中枚舉類型及與控件關(guān)聯(lián)操作的相關(guān)技巧,需要的朋友可以參考下2015-04-04