Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有外键的DataGridView BindingDataSource_C#_Winforms_Datagridview_Enterprise Library_System.data - Fatal编程技术网

C# 带有外键的DataGridView BindingDataSource

C# 带有外键的DataGridView BindingDataSource,c#,winforms,datagridview,enterprise-library,system.data,C#,Winforms,Datagridview,Enterprise Library,System.data,我有一个DataGridView,它绑定到自定义业务对象的BindingList,带有DeckID、Name、UserID、Size和Notes字段 这是通过IDataReader对象从MSSQL数据库调用的。现在,我的问题是UserID是一个整数,在我的数据库中,它是名为SystemUser的表的外键,带有Username字段。 我要做的是从数据库中的SystemUser表中获取用户名,并根据任何用户ID显示该用户名。这在WebForms中非常容易,使用GridView,但在WindowsFo

我有一个DataGridView,它绑定到自定义业务对象的BindingList,带有DeckID、Name、UserID、Size和Notes字段

这是通过IDataReader对象从MSSQL数据库调用的。现在,我的问题是UserID是一个整数,在我的数据库中,它是名为SystemUser的表的外键,带有Username字段。
我要做的是从数据库中的SystemUser表中获取用户名,并根据任何用户ID显示该用户名。这在WebForms中非常容易,使用GridView,但在WindowsForms应用程序中就不那么容易了

我想我知道你在找什么了。从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对象。祝你好运

您应该添加一个平台标记silverlight、asp.net、winforms等。您可以在加入这些表的位置编写自定义查询。是的,但是我必须创建一个新类来保存来自SQL的特定查询,以及该类的数据提供程序和控制器。我知道这在Web表单中是可能的,所以我几乎可以肯定它在Windows表单中是可行的。在我看来,这应该是相当常见的…对不起,我只在C中做过一些事情…我根本不懂VB.NET,我不明白第二行是怎么说的…但我知道如何从GridView获取数据绑定对象。我只是不明白如何让DataGridView自动选择外部表的数据。如果不想更改DTO以最初检索数据,则必须进行第二次数据库调用。将事件置于选择更改上。使用外键设置数据库调用。当您更改选择时,datagrid将自动选择外键数据。对不起,各位,在MSDN上发布了一些帖子后,他们将我链接回StackOverflow上的一篇文章,解决方案如下: