2012-01-18 106 views
1

我有一個DataGridView綁定到自定義業務對象的BindingList<T>,並具有字段DeckID,Name,UserID,Size和Notes。DataGridView綁定數據源與外鍵

這是通過一個IDataReader對象從MSSQL數據庫調用。現在,我的問題是UserID是一個整數,在我的數據庫中,它是一個名爲SystemUser的表的外鍵,帶有用戶名字段。
我想要做的是從我的數據庫中的SystemUser表中獲取用戶名,並根據任何UserID顯示該名稱。這在WebForms中非常容易,使用GridView,但在WindowsForms應用上沒有那麼多。

+0

您應該添加一個平臺標記(silverlight,asp.net,winforms等) – 2012-01-18 18:00:05

+0

您可以在加入這些表的位置編寫自定義查詢。 – pistipanko 2012-01-18 20:45:26

+0

確實如此,但是後來我不得不創建一個新類來保存來自SQL的特定查詢以及該類的數據提供者和控制器。我知道可以在Web窗體中做到這一點,所以我很確定它應該在Windows窗體中可行。在我看來,這應該是相當普遍的事情...... – Jack 2012-01-18 20:57:04

回答

0

我想我明白你在找什麼。從DataGridView實例使用onSelectionChange等事件獲取選定的項目。接下來使用:

var selectedItem = datagridviewinstance.SelectedRows[x].DataBoundItem as YourTypeHere 
var data = (from a in SOMETHING where fk == selectedItem.ForeignKeyProperty select a); 
textbox1.Text = data.text; 

現在你可以讓你的下一個數據庫調用來檢索外鍵對象,並更新你希望的任何GUI對象。祝你好運!

+0

對不起,我只用C#做過東西......我根本不知道VB.NET,我不明白第二行說什麼...但我知道如何從GridView中獲取數據綁定對象。我只是不明白如何讓DataGridView自動選擇外表的數據。 – Jack 2012-01-18 23:22:38

+0

如果您不想更改DTO以最初檢索數據,則必須進行第二次數據庫調用。在「選擇更改」上放置一個事件。使用你的外鍵來設置你的數據庫調用。當你改變你的選擇時,datagrid將「自動選擇」外鍵數據。 – user959729 2012-01-19 13:49:54

+0

抱歉大家,在MSDN上的一些帖子後,他們將我鏈接回StackOverflow上的一篇文章,解決方案在這裏:http://stackoverflow.com/questions/3758757/c-sharp-datagridviewcomboboxcolumn-binding-problem – Jack 2012-01-20 15:41:12