2010-12-13 11 views
2

Hallo Ich habe eine Klasse, die benutzerdefinierte Datentyp Eigenschaft enthält. Ich habe eine Instanz dieser Klasse erstellt. Wenn ich das Objekt dieser Klasse an DetailsView anbinde, werden alle Eigenschaften mit Ausnahme der benutzerdefinierten Datentypeigenschaft angezeigt. Hier ist der Beispielcode.Wie bindet man ein benutzerdefiniertes Datentypobjekt an 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> 

Der obige Code zeigt keine Kundenadresse an. Kann mir jemand helfen ?

Antwort

0

Bei der Bindung von Daten muss die Hauptklasse (hier Kunde) die Klasse Kind (hier Adresse) haben, und um die Eigenschaften des Klassenobjekts anzuzeigen, müssen wir <asp:TemplateField /> verwenden.

Also, das unten stehende Beispiel verwenden:

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

Below Code Erwartet wurde zu arbeiten, aber es wird nicht:

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

Ich denke, in .NET4 Sie tun können:

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