簡體   English   中英

如何在WPF數據網格中顯示相關表中的數據

[英]How to display data from related tables in a WPF datagrid

我只是用WPF / Datagrid / Linq找到了自己的方式,並且試圖找出如何在我的datagrid中顯示相關表中的數據。 例如,我有3個表:

  • 客戶:身份證,姓名
  • 產品:ID,名稱
  • 訂單:id,customerId,productId

並且我已經在數據庫表中建立了關系。 我已將這些表添加為C#數據集,該數據集創建了我的包裝器類。 我現在想將查詢綁定到幾個不同的WPF數據網格以獲得以下內容:

  • 訂單清單為| 訂單編號| 產品名稱 客戶名稱|
  • 客戶列表| 客戶名稱| 訂單摘要(例如,用逗號分隔的字符串列表)|

如何在XAML中指定DataContext或ItemsSource來顯示其他表中的信息? 我正在使用ObjectDataProvider來提供設計時支持,如果有什么區別的話。

我已經看到了這個問題: 如何將WPF Datagrid綁定到一個聯接表該聯接表將創建一個新類來顯示該表的信息。 這是我需要做的而不是指定綁定嗎?

編輯:

使用上面的第二種方法,我取得了一些成功。 我想知道我是否可以使用綁定來實現相同的目的,而無需執行顯式的select查詢來創建新項目。 我有一個查詢,我映射到數據網格:

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。 如果要在多個DataTable之間更改ItemSource,則它比XAML容易。

myDataGrid.ItemsSource = myTable.DefaultView;

每當我想更改數據網格顯示的內容時,我只需更新ItemsSource。 這樣,我可以按照自己想要的任何方式來操作DataTable,然后通過DataGrid看到結果。

更新

要從兩個表中聯接數據,請運行Linq聯接以創建IEnumberable的表中所需字段。 然后將您的IEnumerable轉換回DataTable進行顯示。 我使用這種方法將IEnumerable轉換為DataTable。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM