在 ADO.NET 資料集中瀏覽多個相關表(3)

來源:互聯網
上載者:User
ado|資料 顯示資料
  此應用程式使用組合框、列表框和 RTF 文字框來選擇和顯示資料。
  
  添加選擇和顯示資料的控制項
  
  在 Solution Explorer(方案總管)中,按右鍵 Form1(.cs 或 .vb,取決於應用程式的語言),然後從捷徑功能表中選擇 View Designer(視圖設計器)。
  在表單的左半部,添加一個 ListBox 控制項,並將其 Name 屬性設定為 lbOrders。
  在表單的右半部,添加一個 RichTextBox 控制項,並將其 Name 屬性設定為 rtbDetails。
  在列表框的上方,添加一個 ComboBox 控制項,並將其 Name 屬性設定為 cbCustomers。
  儲存項目。
  
  
  圖 1:建議的表單控制項布局
  
  現在,可以開始嚮應用程式添加功能了。
  
  設定顯示公司名稱的組合框
  
  選擇組合框 (cbCustomers) 並設定以下屬性: 屬性 設定
  DataSource DsNorthwind1
  DisplayMember Customers.CompanyName
  ValueMember Customers.CustomerID
  
  用資料填充表
  要用資料填充表,必須為應用程式添加代碼。
  
  在資料集 (dsNorthwind1) 中的客戶表和訂單表中填充資料
  
  雙擊表單上的一塊空白地區,為 Form1_Load 事件建立事件處理常式。
  添加以下代碼:
  
  ' Visual Basic
  Private Sub Form1_Load(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MyBase.Load
  ' 關閉資料集中的約束。
  DsNorthwind1.EnforceConstraints = False
  ' 用資料填充表。
  daOrders.Fill(DsNorthwind1)
  daCustomers.Fill(DsNorthwind1)
  
  ' 重新開啟約束。
  DsNorthwind1.EnforceConstraints = True
  End Sub
  
  // C#
  private void Form1_Load(object sender, System.EventArgs e)
  {
  // 關閉資料集中的約束。
  dsNorthwind1.EnforceConstraints = false;
  
  // 用資料填充表。
  daOrders.Fill(dsNorthwind1);
  daCustomers.Fill(dsNorthwind1);
  
  // 重新開啟約束。
  dsNorthwind1.EnforceConstraints = true;
  }
  
  
  
  儲存項目。
  按 F5 鍵運行該應用程式。現在組合框中包含一個公司名稱列表。
  關閉表單。
  在兩個表中瀏覽相關記錄
  這裡簡要介紹一下如何在資料集中構成一對多關聯性的兩個表之間訪問資料。在選擇一個資料行之後,可以通過調用 GetChildRows 或 GetParentRow 方法並向該資料行傳遞適當的資料關係來返回其相關記錄。
  
  注意:GetChildRows 方法將以 DataRow 對象數組的形式返回資料,而 GetParentRow 方法只返回一個單個的資料行。
  要示範這一功能,需要給應用程式添加一些代碼,以返回組合框中選定客戶的所有訂單(子行)。更改組合框中的選定客戶會引發 ComboBox.SelectedIndexChanged 事件,列表框中將填充該選定客戶的每個訂單的訂單 ID。
  
  您可以根據組合框中選定的客戶,調用 GetChildRows 方法。訂單表中的所有相關記錄都將分配給名為 draOrders 的資料行數組。
  
  注意:下一節將添加在列表框中顯示相關訂單列表的功能。為確認數組中確實包含相關的記錄,數組的長度(即選定客戶的訂單總數)將顯示為表單的標題。
  建立擷取選定客戶的訂單的事件處理常式
  
  在 Solution Explorer(方案總管)中,按右鍵 Form1 並從捷徑功能表中選擇 View Designer(視圖設計器)。
  雙擊組合框為 SelectedIndexChanged 事件建立事件處理常式。
  添加以下代碼:
  
  ' Visual Basic
  Private Sub cbCustomers_SelectedIndexChanged _
  (ByVal sender As System.Object, ByVal e As System.EventArgs) _
  Handles cbCustomers.SelectedIndexChanged
  ' 聲明一個用來儲存選定客戶的客戶 ID 的字串。
  Dim SelectedCustomerID As String
  SelectedCustomerID = cbCustomers.SelectedValue.ToString()
  ' 聲明一個用來儲存選定客戶的記錄的資料行。
  Dim drSelectedCustomer As DataRow
  drSelectedCustomer = _
  DsNorthwind1.Customers.FindByCustomerID _
  (SelectedCustomerID)
  ' 聲明一個用來儲存相關記錄的資料行數組。
  Dim draOrders As DataRow()
  draOrders = drSelectedCustomer.GetChildRows("CustomersOrders")
  ' 在表單標題中顯示數組的長度(訂單數)
  ' 和客戶 ID。
  Me.Text = draOrders.Length.ToString() & " 訂單所有者 " & _
  SelectedCustomerID
  End Sub
  
  // C#
  private void cbCustomers_SelectedIndexChanged
  (object sender, System.EventArgs e)
  {
  // 聲明一個用來儲存選定客戶的客戶 ID 的字串。
  String SelectedCustomerID;
  SelectedCustomerID = cbCustomers.SelectedValue.ToString();
  
  // 聲明一個用來儲存選定客戶的記錄的資料行。
  DataRow drSelectedCustomer;
  drSelectedCustomer =
  dsNorthwind1.Customers.FindByCustomerID(SelectedCustomerID);
  
  // 聲明一個用來儲存相關記錄的資料行數組。
  DataRow[] draOrders;
  draOrders = drSelectedCustomer.GetChildRows("CustomersOrders");
  
  // 在表單標題中顯示數組的長度(訂單數)
  // 和客戶 ID。
  this.Text = draOrders.Length.ToString() +
  " 訂單所有者 " + SelectedCustomerID;
  }
  
  
  
  儲存項目。
  運行應用程式。
  選擇另一個客戶,並檢查表單標題。將顯示選定客戶的訂單總數及其客戶 ID。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。