2009-03-30 3 views
0

が、私はこれらの3つのクラスがあるとし
一覧< ClassParent 1つ> _TEST ;データバインディングサブクラス

このリストをGridViewにバインドしたい
MyGridView.DataSource = _Test;

これは動作しますが、グリッドには1つのフィールド(ClassParentクラスにあるTestParentプロパティ)のみが表示されます。私は理由を理解しています:リストは 'ClassParent'オブジェクトで作られているので、バインディングはそのクラスのプロパティでのみ行われます。 ClassChild1およびClassChild2型のオブジェクトは、ClassParentから継承されています。

私は異なるタイプのオブジェクトのリストを持っていますが、すべて同じクラスから継承している場合、どのようにすべてのプロパティをグリッドにバインドできますか?

答えて

0

タイプから推論されるのではなく、手動でカラムを作成することができます。こうすることで、必要なプロパティにバインドすることができます。

1

プロパティは、基本クラスに存在する必要があります。それ以外の場合は、定義されていないサブクラスでどのようにアクセスしますか? (何グリッドがClassChild2.TestChild1のために表示したいと思い?)この周り

一つの方法を、次に、あなたのClassParentオブジェクトの仮想プロパティとしてTestChild1TestChild2を定義する子どもたちにそれらを無効にするためにされて動作するはずですあなたのモデルに合うように:

public class ClassParent 
{ 
    public string TestParent { get; set; } 
    public virtual string TestChild1 { get {return null;}} 
    public virtual string TestChild2 { get {return null;}} 
} 

public class ClassChild1 : ClassParent 
{ 
    public override string TestChild1 { get; set; } 
} 

public class ClassChild2 : ClassParent 
{ 
    public override string TestChild2 { get; set; } 
}