我正在使用 .NET 3.5
我有一个继承自抽象类 Person 的类成员
public class Member : Person { public int Number { get; set; } public string LastName { get; set; } public string OtherNames { get; set; } }
我已经声明了一个 BindingList 如下:
BindingList<Person> p_List = new BindingList<Person>();
我有一个 DataGridView,其列如下:
col1.DataPropertyName = "Number"; col2.DataPropertyName = "LastName"; col3.DataPropertyName = "OtherNames";
我从 Member 对象列表中填充 2 中的绑定列表。然后我将 BindingList 绑定到 datagridview,如下所示:
this.dgListView.DataSource = p_List;
datagridview 有 3 列和与成员数量一样多的行。但是,单元格没有任何数据。我认为原因是因为 Member 中的 3 个属性对父级(Person)不可用。当我创建一个“Member-Typed”BindingList m_List,然后通过循环遍历“Person-Typed”p_List 来填充它时,datagridview 的填充没有问题。(见下面的代码)。
BindingList<Member> m_List = new BindingList<Member>();
foreach (Person p in p_Plist)
{
Member m = (Member)p;
m_List.Add(m);
}
this.dgListView.DataSource = m_List;
但是,由于多种原因,我想避免这种情况。关键原因是 p_List 是一个类中的一个属性,我用它来访问 Person 类型的不同对象。这些对象中的每一个都与不同的窗口窗体相关联。因此,我想使用 p_List 以相关形式显示对象,只要对象类继承自 Person 类。我也不想维护 2 个副本(m_List 和 p_List),因为如果我对其中一个进行排序、添加、删除或过滤,我将被迫对另一个进行排序。有没有办法让 datagridview 检测到属性,BindingList<Person>
从而能够像绑定到一样填充它BindingList<Member>
?