2015-08-19 34 views
0

我想編寫一個在Forms應用程序中顯示數據庫內容的軟件。爲了更容易解釋,我將以購物清單爲例。如何在DataGridView中顯示連接表中的信息

  • 我公司擁有一批名單的一個表tLists
  • 我有一些tProductPackages另一個表
  • 列表可以由許多productPackages和一個productPackage可以在許多列表。這種m:n關係反映在名爲tListProdPacks的單獨表格中。
  • productPackage包含產品。一個產品可以有幾個產品包裝。在每個tProductPackage表條目中,都有一個外鍵FK_ProductID,它引用表tProducts中的條目。

我的表單應用程序應該使用BindingNavigator導航所有列表。在某些綁定控件中,它應顯示所選列表的詳細信息。這工作正常。 (剛剛綁定的控件)

所有列表內容(所選tLists元素的tListProdPacks中的條目)應顯示在DataGridView中。這也工作得很好。產品包裝的細節(tProductPackages項目,即下一個表格的一個跳躍)正確顯示。在此表中,他的產品價值可以作爲ID(FK_ ProductID)(tProducts的外鍵)提供。

有沒有辦法在DataGridView的DataSourceView中顯示產品名稱(僅包含在tProducts中)?tListProdPacks? (這很容易顯示tProductPackages成員,因爲tProductPackages的主鍵被引用爲tListProdPacks,並且使用此ID,我可以通過繼續使用相同的valueMember顯示tProductPackages的所有其他詳細信息,但對單個DataGridView列使用不同的DisplayMember值[using DGW中的下拉控件]。) 但是,當進一步跳轉一個表格(即跳轉到tProducts表格)時,此功能不再有效。

我知道我可以創建一個自定義查詢(join,view)來得到我想要的,但是我無法從數據集中更新數據庫。

有沒有人知道如何做到這一點? (我想有框架提供了一些簡單的方法,我只是沒有看到它,對吧?)

我不確定我是否能夠描述我想完成得夠好。如果不是,請幫助我另外提供什麼。

最好的問候, 湯姆

回答

1

ü可以使用連接關聯的表中是否含有主鍵的外鍵關係。使用連接你可以檢索一個包含你可能需要的所有字段的結果集。

+1

你可以使用Ado.net –

+0

但是,當使用JOIN時,我無法更新數據庫,對不對?什麼,如果我想要更新,呢? – TomS

+1

,因爲最好打破所有表並按順序插入相應的數據,但使用事務和提交屬性,以便如果任何更新失敗,它將回滾。你需要在那裏做一些邏輯,比如哪個表更新ist以及哪個表最後還是需要表中的任何id來更新,等等 –