2011-08-15 81 views
0

我使用LINQ查詢有另一個表的外鍵的表,我已經運行SQLMetal和生成的類的表(如我使用SQL精簡版我沒有太多的選擇),我手動創建我的網格視圖的列。如何顯示的子對象的屬性在GridView中的LINQ

我已經爲每個列設置了DataPropertyNames,它們適用於父對象的屬性,但是我想用來自其中一個外部表的值填充列(在本例中稱爲'問題'),我已經嘗試將DataPropertyName設置爲'issues.Title',但是這不起作用,並且列保持爲空。

如果我遍歷查詢結果並打印「issues.Title」它們存在的價值,但他們仍然沒有在列中顯示。 DataPropertyName不支持這樣的子對象,還是由於LINQ?我已經嘗試設置我的查詢使用一個連接對外鍵,但我有相同的結果。

編輯: 我知道有個「的toString」的解決方法,涉及overiding嵌套對象的方法返回的值,但是,這並不適用,因爲在這裏我想不止訪問一個屬性。

經過一番搜索它的父是在DataGridView根本不支持它,所以我期待訪問嵌套對象的屬性在網格中使用的任何其他方式。

回答

1

它看起來像你必須建立在你的父對象委託的屬性,如:

public string IssueTitle 
{ 
    get { return issues.Title; } 
} 

等等

有些人甚至爭辯說,這是面向對象編程方面的唯一正確方法因爲它將子對象或引用的對象封裝在父對象中。事實是,你可以讓父對象自己決定如何渲染,例如,沒有問題的對象。

編輯 您也可以考慮使用視圖模型。通過sqlmetal產生

+0

感謝您的答覆,而這將是不錯的呀,我不能編輯類直接由於他們的解決方案(雖然理論上我能繼承他們)。 – Dan

+0

此外,我決定創建一個基於來自LINQ連接的信息的匿名,它封裝了我想要的所有數據。 – Dan

相關問題