2012-01-18 81 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