C#中DataTable刪除行的方法分析
本文實例講述了C#中DataTable刪除行的方法,分享給大家供大家參考之用。具體實現(xiàn)方法如下:
自己的刪除例子(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()方法,原因是這種刪除只是標識性刪除,就像我們通常在數(shù)據(jù)庫中用到的IsDelete字段。
Delete()之后需要datatable.AccepteChanges()方法確認完全刪除,因為Delete()只是將相應列的狀態(tài)標志為刪除,還可以通過datatable.RejectChanges()回滾,使該行取消刪除。
2.徹底刪除就要用到datatable的.Rows.Remove(DataRow dr)方法,同理也只是刪除一行可以,如果要循環(huán)刪除請繼續(xù)往下看。
3.循環(huán)徹底刪除就要用.Rows.RemoveAt(int index)方法,所以如果你是foreach的愛好者,在此請你換換口味,還有如果你是for的i++的忠實fans也希望你能換個思維。先看一下上面程序的正向?qū)懛ǎㄥe誤的,不可用)
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可能已經(jīng)不是你的符合Convert.ToInt32(dt.Rows[i]["RowID"]) == RowID的index了,甚者還會拋出異常,說你訪問的index不存在。
還是要慎用datatable.Rows.RemoveAt(i),若要刪除多行,可以連續(xù)用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#程序設計的學習有所幫助。
- C#使用DataSet Datatable更新數(shù)據(jù)庫的三種實現(xiàn)方法
- C#中DataTable排序、檢索、合并等操作實例
- C#中把Datatable轉(zhuǎn)換為Json的5個代碼實例
- C#對DataTable里數(shù)據(jù)排序的方法
- c#將list類型轉(zhuǎn)換成DataTable方法示例
- C#中datatable去重的方法
- C#將DataTable轉(zhuǎn)換成list的方法
- C#從DataTable獲取數(shù)據(jù)的方法
- C#實現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
- c#中合并DataTable重復行的值
- C#中csv文件與DataTable互相導入處理實例解析
- C# DataTable中Compute方法用法集錦(數(shù)值/字符串/運算符/表等操作)
相關文章
C#使用BitConverter與BitArray類進行預定義基礎類型轉(zhuǎn)換
這篇文章介紹了C#使用BitConverter與BitArray類進行預定義基礎類型轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05

