Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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# 如何在WPF数据网格中显示相关表中的数据_C#_Sql Server_Wpf_Datagrid - Fatal编程技术网

C# 如何在WPF数据网格中显示相关表中的数据

C# 如何在WPF数据网格中显示相关表中的数据,c#,sql-server,wpf,datagrid,C#,Sql Server,Wpf,Datagrid,我正在寻找使用WPF/Datagrid/Linq的方法,并试图找到如何显示Datagrid中相关表中的数据。例如,我有3个表: 顾客:身份证,姓名 产品:id、名称 订单:id、customerId、productId 我已经在DB表中建立了关系。我将这些表添加为C数据集,它创建了我的包装器类。现在,我想将查询绑定到两个不同的WPF数据网格,以获得以下内容: 订单列表为|订单Id |产品名称|客户名称| 客户列表为|客户名称|订单摘要,如逗号分隔的字符串列表| 如何在XAML中指定DataCon

我正在寻找使用WPF/Datagrid/Linq的方法,并试图找到如何显示Datagrid中相关表中的数据。例如,我有3个表:

顾客:身份证,姓名 产品:id、名称 订单:id、customerId、productId 我已经在DB表中建立了关系。我将这些表添加为C数据集,它创建了我的包装器类。现在,我想将查询绑定到两个不同的WPF数据网格,以获得以下内容:

订单列表为|订单Id |产品名称|客户名称| 客户列表为|客户名称|订单摘要,如逗号分隔的字符串列表| 如何在XAML中指定DataContext或ItemsSource以显示来自其他表的信息?我使用ObjectDataProviders来提供设计时支持,如果这有什么不同的话

我看到了这个问题:它创建了一个新类来显示表的信息。我需要这样做而不是指定绑定吗

编辑:

我使用上面第二种方法取得了一些成功。我想知道我是否可以使用绑定来实现同样的功能,而无需执行显式的select查询来创建新项。我有一个映射到datagrid的查询:

var q = from d in dbMan.dataset.Orders
   select new { 
     id=d.id, 
     productName = d.ProductsRow.name, 
     custName = d.CustomersRow.name };
然后在XAML中绑定:

<my:DataGrid.Columns>
  <my:DataGridTextColumn Header="id" Binding="{Binding id}" />
  <my:DataGridTextColumn Header="Product Name" Binding="{Binding productName}" />
  <my:DataGridTextColumn Header="Customer Name" Binding="{Binding custName}" />
</my:DataGrid.Columns>

我通常只是在代码隐藏中将DataGrids ItemSource设置为DataTable。如果要在多个数据表之间更改ItemSource,这比XAML更容易

myDataGrid.ItemsSource = myTable.DefaultView;
只要我想更改datagrid显示的内容,我只需更新ItemsSource。通过这种方式,我可以以我想要的任何方式操纵我的数据表,然后通过DataGrid查看结果

更新


要连接两个表中的数据,请运行Linq连接以创建表中所需字段的IEnumberable。然后将IEnumerable转换回数据表进行显示。我过去常常将IEnumerable转换为DataTable。

但是,我如何才能将多个表中的字段组合起来呢?多亏了-这些额外的步骤必须进行连接,然后转换为DataTable对我来说并不明显。
myDataGrid.ItemsSource = myTable.DefaultView;