C# 如何在WPF数据网格中显示相关表中的数据
我正在寻找使用WPF/Datagrid/Linq的方法,并试图找到如何显示Datagrid中相关表中的数据。例如,我有3个表: 顾客:身份证,姓名 产品:id、名称 订单:id、customerId、productId 我已经在DB表中建立了关系。我将这些表添加为C数据集,它创建了我的包装器类。现在,我想将查询绑定到两个不同的WPF数据网格,以获得以下内容: 订单列表为|订单Id |产品名称|客户名称| 客户列表为|客户名称|订单摘要,如逗号分隔的字符串列表| 如何在XAML中指定DataContext或ItemsSource以显示来自其他表的信息?我使用ObjectDataProviders来提供设计时支持,如果这有什么不同的话 我看到了这个问题:它创建了一个新类来显示表的信息。我需要这样做而不是指定绑定吗 编辑: 我使用上面第二种方法取得了一些成功。我想知道我是否可以使用绑定来实现同样的功能,而无需执行显式的select查询来创建新项。我有一个映射到datagrid的查询: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
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;