——此文章摘自《C#高級編程(第
版)》定價
元 特價
元 購買
DataGrid主要用於顯示DataSet中的數據和以前的示例一樣DataGrid一次只能顯示一個DataTable但在下面的示例DataSourceDataSet中可以浏覽DataSet中的關系下面的代碼可以根據Northwind數據庫中的Customers和Orders表生成這樣一個DataTable這個示例從兩個DataTable中加載數據然後在這些表之間創建了一個關系CustomerOrders
string source =server=(local)\\NetSDK; +
uid=QSUser;pwd=QSPassword; +
database=northwind;
string orders = SELECT * FROM Orders;
string customers = SELECT * FROM Customers;
SqlConnection conn = new SqlConnection(source);
SqlDataAdapter da = new SqlDataAdapter(orders conn);
DataSet ds = new DataSet();
daFill(ds Orders);
da = new SqlDataAdapter(customers conn);
daFill(ds Customers);
dsRelationsAdd(CustomerOrders
dsTables[Customers]Columns[CustomerID]
dsTables[Orders]Columns[CustomerID]);
創建好後通過調用SetDataBinding就可以把DataSet綁定到DataGrid上
dataGridSetDataBinding(ds Customers);
這樣會得到如所示的屏幕圖
圖
注意與本章前面的DataGrid不同每個記錄的左邊都有一個+號這表示DataSet在customers 和orders表之間有一個可導航的關系在代碼中可以定義許多這類關系
單擊+號就會顯示關系列表(如果關系已經顯示出來單擊+號就會隱藏該關系)單擊關系名就可以定位到鏈接的記錄上如圖所示在本例中是列出選中客戶的所有訂單
圖
DataGrid控件的右上角還包含兩個新圖標箭頭允許用戶可以導航回父行顯示上一頁的內容標題行顯示父記錄的細節單擊另一個按鈕會隱藏或顯示該箭頭
在DataViewManager中顯示數據
DataViewManager中顯示的數據與DataSet中顯示的數據相同但在為DataSet創建DataViewManager時會為每個DataTable創建一個單獨的 DataView根據過濾條件或者行的狀態改變顯示出來的行如上面的DataView示例所示即使不希望過濾數據也可以把DataSet包裝到 DataViewManager中以進行顯示因為這樣在修改源代碼時可以使用更多的選項
下面的示例根據上一例中的DataSet 創建一個DataViewManager然後改變Customers表中的DataView使之只顯示來自英國的客戶
DataViewManager dvm = new DataViewManager(ds);
dvmDataViewSettings[Customers]RowFilter = Country=UK;
dataGridSetDataBinding(dvm Customers);
如圖所示為DataSourceDataViewManager示例代碼的運行結果
圖
From:http://tw.wingwit.com/Article/program/net/201311/14829.html