2016-01-06 27 views
-2

我有一個基類(人)唯一的財產2推導類(person_registered)和衍生化類(person_not_registered 我有與內置物混合一**名單person_registered和person_not_registered **C#的DataGridView自動生成欄顯示基類的

我有一個DataGridView,爲展會的名單,我已經設置dataGridView.Datasource =註冊表(名單),與dataGridView.autogeneratecolumns =真;

但dataGridView只顯示基類屬性的列和不顯示我派生類的屬性

爲什麼?

+1

,如果你做的是從人的派生另一個類,會發生什麼並將其添加到人員列表中?你希望它能夠顯示這個班的屬性嗎?如果他們不同於從另一個人派生出來的類別呢? – dugas

+1

如果您真的要顯示與您的問題和/或問題有關的所有相關代碼,會發生什麼情況? – MethodMan

+0

因爲你使用List(Person class)作爲DataSource.Show代碼,很難理解。 – Fabio

回答

1

它不顯示,因爲你擁有它倒退。

應該Person : RegisteredRegistered : 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; 
0
Public **class person** 
{String *Name*; String *Surname*;} 

Public **class registered:person** 
{ datetime *dateOfRegister*;} 

public **class registry:list<person>** 
{ public new void Add(Person item) 
....} 

形式電網:

dgvNotRegister.DataSource = this.anagrafica; //list of person<br> 
dgvNonRegister.AutoGenerateColumns = true; 

dgvNotRegister **show**: 
Name Surname 

但不是:show dateOfRegister

+0

真的嗎? Class Person只包含'Name'和'Surname'屬性。你的'DataGridView'的數據源是'List '。這就是爲什麼datagridview不會生成'dateOfRegister'。將數據源更改爲'列表' – Fabio