访问包含另一个类的属性的类的属性

时间:2012-09-29 05:38:14

标签: c#

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

我想要firstnamelastname&amp;要age打印gridview,但我会收到一列,而不是三列,其中包含mynamespace.person: - (

帮帮我们......任何帮助都表示赞赏。

3 个答案:

答案 0 :(得分:1)

您只需选择CustPerson属性(Linq):

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

另外,请确保GridView AutoGenerateColumns设置为true。

答案 1 :(得分: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>

答案 2 :(得分: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; }
}