2012-09-29 39 views
0
public class Customer 
{ 
    public int id { get; set; } 
    public Person CustPerson { get; set; } 
    public Customer() 
    { 
     this.CustPerson = new Person(); 
    } 
} 

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    List<Customer> CustomerList=new List<Customer>(); 
    for (int i = 0; i <= 4; i++) 
    { 
     Customer cust = new Customer(); 
     cust.id = i; 
     cust.CustPerson.FirstName = "john" + i.ToString(); 
     cust.CustPerson.LastName = "deo" + i.ToString(); 
     cust.CustPerson.Age = 20 + i; 
     CustomerList.Add(cust); 
    } 
    dataGridView1.DataSource = CustomerList; 
} 

我想firstname的屬性一類的屬性,lastname & agegridview被打印出來,但我得到一個列,而不是三個,其中包含mynamespace.person: - (存取含有其他類

幫我出家夥...任何幫助表示讚賞

+1

人們常常說,我們應該更喜歡組成了繼承,但在這個(經典)的情況,因爲一個顧客可能*是一個人,或許你應該改變你的方法,讓'顧客'從'Person'派生,而不是擁有'Person'屬性。 – phoog

回答

1

你只需要選擇CustPerson屬性(LINQ):

CustomerList.Add(cust.Select(c => c.CustPerson).ToArray()); 

還要確保GridViewAutoGenerateColumns設置爲true。

0

的過程類似描述here你可以設置列的GridView控件來顯示你喜歡的任何信息

 <asp:TemplateField HeaderText="First Name" SortExpression="CustPerson.FirstName"> 
     <ItemTemplate> 
      <asp:Label ID="lblCustomerFirstName" runat="server" Text=''<%# ((Person)Eval("CustPerson")).Firstname %>''></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Last Name" SortExpression="CustPerson.LastName"> 
     <ItemTemplate> 
      <asp:Label ID="lblCustomerLastName" runat="server" Text=''<%# ((Person)Eval("CustPerson")).LastName %>''></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Age" SortExpression="CustPerson.Age"> 
     <ItemTemplate> 
      <asp:Label ID="lblCustomerAge" runat="server" Text=''<%# ((Person)Eval("CustPerson")).Age %>''></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
+0

mlorbetske謝謝 – Bharath

0
public partial class Form1 : Form 
{ 
    DataGridViewCheckBoxColumn Column; 
    CheckBox checkbox; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click_1(object sender, EventArgs e) 
    { 
     List<Customer> CustomerList = new List<Customer>(); 
     for (int i = 0; i <= 4; i++) 
     { 
      Customer cust = new Customer(); 
      cust.id = i;     
      cust.FirstName = "john" + i.ToString(); 
      cust.LastName = "deo" + i.ToString(); 
      cust.Age = 20 + i; 
      CustomerList.Add(cust); 
     } 
     dataGridView1.AutoGenerateColumns = true; 
     dataGridView1.DataSource = CustomerList;    
    } 
} 
public class Customer:Person 
{ 
    public int id { get; set; }  
} 

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
} 
+1

感謝您的幫助friends..found一個簡單的方法來做到這一點..我只是把人作爲我的基類客戶..所以我可以設置派生類對象的基類屬性的屬性,我終於添加客戶對象列表... – Bharath

+0

感謝guys..got解決方案.. – Bharath