数据绑定子类

时间:2009-03-30 14:22:48

标签: c# data-binding subclass

说我有这3个课程:

public class ClassParent  
{  
public string TestParent { get; set; }  
}

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

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

说,我已经创建了很多类型为ClassChild1和ClassChild2的对象,我已经存储在这个列表中:
    列表与LT; ClassParent> _Test;

我想将此列表绑定到GridView
    MyGridView.DataSource = _Test;

这可以工作,但它只显示网格中的一个字段(TestParent属性在ClassParent类中)。我理解为什么:列表由'ClassParent'对象组成,因此只能使用该类的属性进行绑定。问题是ClassChild1和ClassChild2类型的对象继承自ClassParent。

我的问题是:如果我有一个不同类型的对象列表,但它们都从同一个类继承,那么我如何将所有属性绑定到网格?

2 个答案:

答案 0 :(得分:1)

属性必须存在于基类中。否则,您将如何在未定义它们的子类中访问它们? (您希望网格显示为ClassChild2.TestChild1?)

解决这个问题的方法之一是将TestChild1TestChild2定义为ClassParent对象的虚拟属性,然后在子代中覆盖它们:

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; }  
}

答案 1 :(得分:0)

您可以手动创建列,而不是从类型中推断出列。这样,您就可以绑定到您想要的任何属性。