Как связать определенный пользователем объект типа данных с DetailsView? - PullRequest
2 голосов
/ 13 декабря 2010

Привет У меня есть класс, который содержит пользовательское свойство типа данных. Я создал экземпляр этого класса. Когда я связываю этот объект этого класса с 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>

Над кодом не отображается адрес клиента. Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 10 августа 2015

Я думаю, что в .NET4 вы можете сделать:

<asp:BoundField DataField="CustomerAddress.City" HeaderText="City" />
0 голосов
/ 24 апреля 2015

При связывании данных, в случае, если у основного класса (здесь клиент) есть дочерний класс (здесь адрес), то для отображения свойств объекта дочернего класса нам нужно использовать <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" />
...