2011-08-15 10 views
0

LINQを使用して別のテーブルの外部キーを照会していますが、SQLMetalを実行してテーブルのクラスを生成しました(SQL Compact Editionあまり選択肢がありません)、グリッドビューの列を手動で作成しています。GridViewでLINQを使用してサブオブジェクトのプロパティを表示する方法

私は各列のDataPropertyNamesを設定していますが、親オブジェクトのPropertiesで機能しますが、外部テーブルの1つからの値を列に取り込みたいとします(この場合、 'issues')、DataPropertyNameを 'issues.Title'に設定しようとしましたが、これは効果がなく、列は空のままです。

質問結果をループして 'issues.Title'の値を表示すると、それらは存在しますが、列には表示されません。 DataPropertyNameは、このようなサブオブジェクトをサポートしていないか、それともLINQのためですか?私は外部キーに対しても結合を使用するために私のクエリを設定しようとしましたが、私は同じ結果を持っています。

編集: しかし私は、これは私がより多くのへのアクセスを希望するので、ここでは適用されない、値を返すためにネストされたオブジェクトのメソッドをoveriding関係「のtoString」の回避策があることを承知しています1つの特性。

DataGridViewが単にそれをサポートしていないので、グリッドで使用するためにネストされたオブジェクトのプロパティにアクセスする他の方法を探しています。以下のようなあなたの親オブジェクト内の委任プロパティを作成する必要がありますように見えます

答えて

1

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

一部でもこれは、オブジェクト指向プログラミングの点では唯一の適切な方法であると主張しますこれは、親オブジェクト内の子オブジェクトまたは参照オブジェクトをカプセル化するためです。事実は、親オブジェクト自体に何をレンダリングするかを決定させることができます。問題はありません。

編集 また、ビューモデルの使用を検討することもできます。

+0

私のクラスを直接編集することはできませんが、理論的には継承することはできますが、sqlmetalによって生成されるため、このような解決策は得られません。 – Dan

+0

さらに、私が望むすべてのデータをカプセル化したLINQ結合の情報に基づいて匿名を作成することに決めました。 – Dan

関連する問題