首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

ADO.NET 實戰進階(三):DataView 視圖操作、排序篩選與 DataTable 關聯關係完整解析

     編輯:關於.NET

DataView:DataTable 的可視化介面

DataTable 儲存記憶體資料但無法直接呈現。DataView 如同「杯子裝水」——提供資料的可視化視圖,支援排序、篩選、編輯等操作。DefaultView 是 DataTable 自動建立的預設視圖。

建立與使用 DataView

DataView dv = new DataView(table2);  // 為 table2 建立視圖
dv.Sort = "bookname";                // 設定排序欄位
GridView2.DataSource = dv;           // 繫結至視圖而非 DefaultView
GridView2.DataBind();

關鍵點: 對 dv 排序後,必須繫結 dv 而非 DefaultView 才會生效。

DataView 核心功能實戰

排序

dv.Sort = DropDownList1.SelectedItem.Text;  // 依使用者選擇欄位排序

新增資料列

DataRowView drv = dv.AddNew();
drv["id"] = 100; drv["tb1_id"] = 2; drv["bookname"] = "張愛玲散文集";
GridView2.DataSource = dv; GridView2.DataBind();

刪除資料列

dv.Delete(dv.Count - 1);  // 刪除最後一列

修改資料

dv[0]["bookname"] = "如來神掌";  // 修改第 0 列的 bookname

查找資料(需先排序)

dv.Sort = "bookname";
int index = dv.Find("追風箏的人");  // 回傳索引位置

RowFilter 條件篩選

dv.RowFilter = "bookname='大學英語'";  // 僅顯示符合條件的列

RowStateFilter 狀態篩選

dv.RowStateFilter = DataViewRowState.Deleted;  // 顯示已刪除的列
// 需先呼叫 table2.AcceptChanges() 建立基準版本

DataView 透過標記而非實際刪除資料,可檢視刪除/新增/修改前後狀態。

DataTable 關聯關係

DataSet 由 DataTable 與 Relations 組成。建立父子關聯:

DataRelation tb12 = new DataRelation("tb12", 
    ds.Tables["tb1"].Columns["id"], ds.Tables["tb2"].Columns["tb1_id"]);
ds.Relations.Add(tb12);

透過關聯取得子資料

DataRow dr = ds.Tables["tb1"].Rows[rowIndex];
DataRow[] childRows = dr.GetChildRows("tb12");  // 取得該父列對應的所有子列
foreach (DataRow cdr in childRows) {
    dt.Rows.Add(dr["name"], cdr["bookname"]);  // 組合顯示
}

實務啟示

手動建構 DataSet 僅適合測試。實際開發需從資料庫載入資料至 DataSet、離線處理後批量更新。下一篇將深入 SqlDataAdapter 高效填充與更新技巧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved