我想編寫一個在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)來得到我想要的,但是我無法從數據集中更新數據庫。
有沒有人知道如何做到這一點? (我想有框架提供了一些簡單的方法,我只是沒有看到它,對吧?)
我不確定我是否能夠描述我想完成得夠好。如果不是,請幫助我另外提供什麼。
最好的問候, 湯姆
你可以使用Ado.net –
但是,當使用JOIN時,我無法更新數據庫,對不對?什麼,如果我想要更新,呢? – TomS
,因爲最好打破所有表並按順序插入相應的數據,但使用事務和提交屬性,以便如果任何更新失敗,它將回滾。你需要在那裏做一些邏輯,比如哪個表更新ist以及哪個表最後還是需要表中的任何id來更新,等等 –