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)志為刪除,還可以通過(guò)datatable.RejectChanges()回滾,使該行取消刪除。
2.徹底刪除就要用到datatable的.Rows.Remove(DataRow dr)方法,同理也只是刪除一行可以,如果要循環(huán)刪除請(qǐng)繼續(xù)往下看。
3.循環(huán)徹底刪除就要用.Rows.RemoveAt(int index)方法,所以如果你是foreach的愛(ài)好者,在此請(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ì)拋出異常,說(shuō)你訪問(wèn)的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類(lèi)型轉(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í)現(xiàn)語(yǔ)音視頻錄制-附demo源碼
在很多語(yǔ)言視頻軟件系統(tǒng)中,經(jīng)常有將實(shí)時(shí)的音頻或者是視頻錄制為文件保存到磁盤(pán)空間的需求,本篇給大家講C#實(shí)現(xiàn)語(yǔ)音視頻錄制-附demo源碼,感興趣的朋友一起來(lái)學(xué)習(xí)吧2015-08-08
C# 調(diào)用Delphi dll 實(shí)例代碼
這篇文章介紹了C# 調(diào)用Delphi dll 實(shí)例代碼,有需要的朋友可以參考一下2013-09-09
使用Deflate算法對(duì)文件進(jìn)行壓縮與解壓縮的方法詳解
本篇文章是對(duì)使用Deflate算法對(duì)文件進(jìn)行壓縮和解壓縮的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
C#使用BitConverter與BitArray類(lèi)進(jìn)行預(yù)定義基礎(chǔ)類(lèi)型轉(zhuǎn)換
這篇文章介紹了C#使用BitConverter與BitArray類(lèi)進(jìn)行預(yù)定義基礎(chǔ)類(lèi)型轉(zhuǎn)換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
c#數(shù)據(jù)庫(kù)與TXT導(dǎo)入導(dǎo)出的實(shí)例
最近剛學(xué)完ADO.NET,做了個(gè)數(shù)據(jù)導(dǎo)入導(dǎo)出的題目,是將txt中的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),然后將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出到txt中,這里說(shuō)的數(shù)據(jù)的格式是“tom|23”,tom指名字,23指年齡。廢話也不多說(shuō)了,大家直接看代碼。2013-04-04
C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面
這篇文章主要為大家介紹了使用C#跨PC遠(yuǎn)程調(diào)用程序并顯示UI界面,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
C# Socket實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)案例
這篇文章主要為大家分享了C# Socket簡(jiǎn)單的控制臺(tái)案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
C#實(shí)現(xiàn)客戶端彈出消息框封裝類(lèi)實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)客戶端彈出消息框封裝類(lèi),實(shí)例分析了C#彈出窗口的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03

