2010-12-13 61 views
2

嗨我有一个类,其中包含用户定义的数据类型属性。我创建了该类的一个实例。当我将该类的该对象绑定到DetailsView时,它将显示除用户定义的数据类型属性以外的所有属性。这里是示例代码。如何将用户定义的数据类型对象绑定到DetailsView?

public class Customer 
{ 
    public string CustomerName { get; set; } 
    public int Age { get; set; } 
    public Address CustomerAddress { get; set; } 
} 

Address class looks like 

public class Address 
{ 
    public string Line1 { get; set; } 
    public string Line2 { get; set; } 
    public string City { get; set; } 
} 

Creating an object of Customer class 

var cust = new Customer { 
       CustomerName = "abc", 
       Age = 25, 
       CustomerAddress = new Address{ Line1 = "abc", Line2 = "abc", City = "abc" }}; 

Binding cust to Details View 

List<Customer> customerInfo = new List<Customer>(); 
customerInfo.Add(cust); 
DetailsView1.DataSource = custmerInfo; 
DetailsView1.DataBind(); 

In .aspx page 

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"> 
<Fields> 
    <asp:BoundField DataField="CustomerName" HeaderText="Customer Name"> 
    <asp:BoundField DataField="Age" HeaderText="Customer Age"> 
    <asp:BoundField DataField="CustomerAddress" HeaderText="Customer Address "> 
</Fields> 
</asp:DetailsView> 

以上代码未显示客户地址。谁能帮我 ?

回答

0

绑定数据时,如果Main Class(Customer here)有Child class(Address here),然后显示Child类对象的属性,我们需要使用<asp:TemplateField />

因此,使用下面的示例:

<asp:TemplateField HeaderText=”City”> 
    <ItemTemplate> 
     <asp:Label ID=”customerCity” runat=”server” 
        Text='<%# Eval("CustomerAddress.City") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

下面的代码预期的工作,但它不会:

<asp:BoundField DataField="CustomerAddress.City" HeaderText="City" /> 
0

我想在.NET4你可以这样做:

<asp:BoundField DataField="CustomerAddress.City" HeaderText="City" /> 
相关问题