c#DataGridView自动生成列仅显示基类的属性
我有一个基类(person)和2个派生类(person\u注册)和派生类(person\u未注册) 我有一个**的内部对象列表,包括注册的人和未注册的人** 我有一个dataGridView,用于显示列表,我设置了dataGridView.Datasource=registry(列表),使用dataGridView.autogeneratecolumns=true 但是dataGridView只显示基类属性的列,而不显示派生类的属性 为什么** {String*Name*;String*姓氏*;} 公共**类注册:人** {datetime*注册表的日期*;} 公共**类注册表:列表** {公共新作废添加(个人项目) ....} 表格表格:c#DataGridView自动生成列仅显示基类的属性,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个基类(person)和2个派生类(person\u注册)和派生类(person\u未注册) 我有一个**的内部对象列表,包括注册的人和未注册的人** 我有一个dataGridView,用于显示列表,我设置了dataGridView.Datasource=registry(列表),使用dataGridView.autogeneratecolumns=true 但是dataGridView只显示基类属性的列,而不显示派生类的属性 为什么** {String*Name*;String*姓氏*;
dgvNotRegister.DataSource = this.anagrafica; //list of person<br>
dgvNonRegister.AutoGenerateColumns = true;
dgvNotRegister **show**:
Name Surname
dgvNotRegister.DataSource=this.anagrafica;//人员列表
dgvNonRegister.AutoGenerateColumns=true;
dgvNotRegister**显示**:
姓名
但不是:
显示注册表日期
它不会显示,因为您将它向后显示
它应该是Person:registed
而不是registed:Person
尝试以下课程:
public class Person : Registered
{
public int ID { set; get; }
public string FirstName { set; get; }
public string LastName { set; get; }
}
public class Registered
{
public DateTime DateOfRegister { set; get; }
}
然后按如下方式填充dataGridView:
// Create the Data
List<Person> myData = new List<Person>();
myData.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "White", DateOfRegister = Convert.ToDateTime("Dec 25, 2015") });
myData.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith", DateOfRegister = Convert.ToDateTime("Jan 5, 2016") });
myData.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang", DateOfRegister = Convert.ToDateTime("Feb 28, 2016") });
// Pass the data to the dataGrid
dataGridView1.DataSource = myData;
//创建数据
List myData=new List();
myData.Add(newperson(){ID=5,FirstName=“Jamie”,LastName=“White”,DateOfRegister=Convert.ToDateTime(“2015年12月25日”)});
myData.Add(newperson(){ID=10,FirstName=“Mike”,LastName=“Smith”,DateOfRegister=Convert.ToDateTime(“2016年1月5日”)});
myData.Add(newperson(){ID=25,FirstName=“Joe”,LastName=“Yang”,DateOfRegister=Convert.ToDateTime(“2016年2月28日”)});
//将数据传递到dataGrid
dataGridView1.DataSource=myData;
如果您创建了另一个派生自person的类并将其添加到人员列表中,会发生什么?您希望它也显示该类的属性吗?如果它们与派生自person的另一个类不同,会发生什么?如果您实际显示与您的问题和/或问题相关的所有代码,会发生什么e因为您使用了人员列表(基类)作为数据源。显示代码,很难理解。真的吗?Class Person只包含名称
和姓氏
属性。您的DataGridView
的数据源是List
。这就是DataGridView不生成dateOfRegister
的原因。将数据源更改为List
// Create the Data
List<Person> myData = new List<Person>();
myData.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "White", DateOfRegister = Convert.ToDateTime("Dec 25, 2015") });
myData.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith", DateOfRegister = Convert.ToDateTime("Jan 5, 2016") });
myData.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang", DateOfRegister = Convert.ToDateTime("Feb 28, 2016") });
// Pass the data to the dataGrid
dataGridView1.DataSource = myData;