国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ADO.NET 數據集中瀏覽多個相關表 5

2019-11-18 19:11:46
字體:
來源:轉載
供稿:網友

創建關系
  在 Solution Explorer(解決方案資源管理器)中,雙擊 dsNorthwind.xsd 文件。文
件將在 xml Designer(XML 設計器)中打開。
  從工具欄的 XML Schema(XML 架構)選項卡中,將 Relation(關系)拖到訂單表上
。
  在 Edit Relation(編輯關系)對話框中,設置以下屬性:
  元素 設置
  Name CustomersOrders
  Parent Customers
  Child Orders
  Key Fields CustomerID
  Foreign Key Fields CustomerID
  單擊 OK(確定)以創建關系并關閉對話框。
  從工具欄的 XML Schema(XML 架構)選項卡中,將 Relation(關系)拖到訂單明細
表上。
  在 Edit Relation(編輯關系)對話框中,設置以下屬性:
  元素 設置
  Name OrdersOrderDetails
  Parent Orders
  Child OrderDetails
  Key Fields OrderID
  Foreign Key Fields OrderID
  單擊 OK(確定)以創建關系并關閉對話框。
  從工具欄的 XML Schema(XML 架構)選項卡中,將 Relation(關系)拖到訂單明細
表上。
  在 Edit Relation(編輯關系)對話框中,設置以下屬性:
  元素 設置
  Name PRoductsOrderDetails
  Parent Products
  Child OrderDetails
  Key Fields ProductID
  Foreign Key Fields ProductID
  單擊 OK(確定)以創建關系并關閉對話框。
  保存項目。
  訂單明細表和產品表已被添加到數據集中,但是您仍需要添加代碼,以便在運行時用
數據來填充它們。
  用數據填充表
  在 Solution Explorer(解決方案資源管理器)中,右鍵單擊 Form1 并從快捷菜單中
選擇 View Code(查看代碼)。
  在 Form1_Load 事件處理程序中,將以下代碼添加到注釋“用數據填充表”與 daOrd
ers.Fill(dsNorthwind1) 行之間:
  ' Visual Basic
  daOrderDetails.Fill(dsNorthwind1)
  daProducts.Fill(dsNorthwind1)
  // C#
  daOrderDetails.Fill(dsNorthwind1);
  daProducts.Fill(dsNorthwind1);
  用數據填充 RTF 文本框
  現在您要為項目添加代碼,以便在列表框中選定某個訂單時,可以在 RTF 文本框中顯
示所有訂單明細。
  以下代碼將基于列表框中的選定訂單調用 GetChildRows 方法。訂單明細表中的所有
相關記錄都將分配給名為 draOrderDetails 的數據行數組。每個數據行的內容將顯示在
RTF 文本框中。
  注意:請注意嵌套的 For Each 循環是如何首先選取一個數據行,然后在該數據行的
所有列中循環以訪問整個相關記錄的。
  設置 RTF 文本框以顯示所有訂單明細
  在 Solution Explorer(解決方案資源管理器)中,右鍵單擊 Form1 并從快捷菜單中
選擇 View Designer(視圖設計器)。
  雙擊列表框為列表框 lbOrders 的 SelectedIndexChanged 事件創建事件處理程序。

  添加以下代碼:
  ' Visual Basic
  Private Sub lbOrders_SelectedIndexChanged _
  (ByVal sender As System.Object, ByVal e As System.EventArgs) _
  Handles lbOrders.SelectedIndexChanged
  ' 選擇新訂單時,清除 RTF 文本框。
  rtbDetails.Clear()
  ' 聲明一個用來保存選定的訂單 ID 的整數。
  Dim SelectedOrderID As Integer
  ' 將選定的項目設置為整數。
  SelectedOrderID = CType(lbOrders.SelectedItem, Integer)
  ' 聲明一個用來保存選定訂單的記錄的數據行。
  Dim drSelectedOrder As DataRow
  drSelectedOrder = _
  DsNorthwind1.Orders.FindByOrderID(SelectedOrderID)
  ' 聲明一個用來保存相關記錄的數據行數組。
  Dim draOrderDetails() As DataRow
  draOrderDetails = _
  drSelectedOrder.GetChildRows("OrdersOrderDetails")
  Dim details As String = ""
  Dim drDetails As DataRow
  Dim dcDetails As DataColumn
  For Each drDetails In draOrderDetails
  For Each dcDetails In drDetails.Table.Columns
  details &= dcDetails.ColumnName & ": "
  details &= drDetails(dcDetails).ToString()
  details &= ControlChars.CrLf
  Next
  details &= ControlChars.CrLf
  Next
  rtbDetails.Text = details
  End Sub
  // C#
  private void lbOrders_SelectedIndexChanged
  (object sender, System.EventArgs e)
  {
  // 選擇新訂單時,清除 RTF 文本框。
  rtbDetails.Clear();
  // 聲明一個用來保存選定的訂單 ID 的整數。
  int SelectedOrderID;
  // 將選定的項目設置為整數。
  SelectedOrderID = (int)lbOrders.SelectedItem;
  // 聲明一個用來保存選定訂單的記錄的數據行。
  DataRow drSelectedOrder;
  drSelectedOrder =
  dsNorthwind1.Orders.FindByOrderID(SelectedOrderID);
  // 聲明一個用來保存相關記錄的數據行數組。
  DataRow[] draOrderDetails;
  draOrderDetails =
  drSelectedOrder.GetChildRows("OrdersOrderDetails");
  string details = "";
  foreach(DataRow drDetails in draOrderDetails)
  {
  foreach(DataColumn dcDetails in drDetails.Table.Columns)
  {
  details += dcDetails.ColumnName + ": ";
  details += drDetails[dcDetails].ToString() + "/n";
  }
  details += "/n";
  }
  rtbDetails.Text = details;
  }
  保存項目。
  運行應用程序。
  在列表框中選擇一個訂單,其訂單明細將顯示在 RTF 文本框中。
  在列表框中選擇另一個訂單。RTF 文本框中的訂單明細將被更新。
  瀏覽多對多關系
  構成多對多關系的表通常通過保證數據完整性的第三方表進行連接。在羅斯文數據庫
中,訂單表和產品表就是這樣相關的。因為有些訂單可能包含很多產品,而有些產品又
在很多訂單中銷售。這兩個表是通過訂單明細表連接的,訂單明細表利用這兩個表中的
列建立自己特定的列,并使這些數據相關。瀏覽構成多對多關系的三個表與處理一對多
關系的表并沒有太大區別。
  要瀏覽多對多關系,您可以基于訂單明細表中的單個記錄來訪問產品,這將返回產品
名稱并顯示在訂單明細中。
  您可以使用 GetParentRow 方法從產品表中訪問產品名稱。調用 GetParentRow 方法
將返回單個數據行,而調用 GetChildRows 方法將返回數據行數組(如上例所示)。
  從訂單明細記錄中獲取產品名稱
  在 Solution Explorer(解決方案資源管理器)中,右鍵單擊 Form1 并從快捷菜單中
選擇 View Code(查看代碼)。
  在列表框 (lbOrders) 的 SelectedIndexChanged 事件處理程序中,將以下代碼添加
到 For Each 行之間:
  ' Visual Basic
  details &= "產品名稱: " & _
  CType(drDetails.GetParentRow("ProductsOrderDetails") _
  ("ProductName"), String) & ControlChars.CrLf
  // C#
  details += "產品名稱: " +
  drDetails.GetParentRow("ProductsOrderDetails")["ProductName"]
  + "/n";
  保存項目。
  運行應用程序。
  在列表框中選擇一個訂單,
  RTF 文本框中將顯示產品名稱和詳細信息?,F在窗體中顯示來自所有四個表的相關數
據。
  圖 2:顯示產品名稱和訂單明細的窗體
  在列表框中選擇另一個訂單。RTF 文本框中的訂單明細將被更新。
  關閉窗體。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南漳县| 分宜县| 富蕴县| 北宁市| 弥勒县| 同德县| 济阳县| 鄂托克旗| 额敏县| 慈利县| 岳普湖县| 巴林左旗| 噶尔县| 都兰县| 县级市| 昔阳县| 鄂托克前旗| 射阳县| 吉水县| 青田县| 铜梁县| 社会| 婺源县| 馆陶县| 鲁山县| 道孚县| 三江| 县级市| 涪陵区| 九龙县| 巴塘县| 德庆县| 沙坪坝区| 阳新县| 应城市| 石家庄市| 西乡县| 无棣县| 哈密市| 哈密市| 时尚|