2010-12-13 17 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

メインクラス(ここでは顧客)に子クラス(ここでは住所)がある場合、子クラスオブジェクトのプロパティを表示するには、<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" /> 
関連する問題