2010-11-20 11 views
1

Hey,
Ich möchte den Titel und den Preis eines Films in meinem Gridview zeigen. Der Titel und der Preis sind Eigenschaften aus der Klasse Film und Film ist eine Eigenschaft der Klasse CartItem.Bind Eigenschaft der Eigenschaft zu GridView

Hier ist der Code meiner gridview

<asp:GridView ID="gvShoppingCart" runat="server" AutoGenerateColumns="False"> 
<Columns> 
    <asp:BoundField DataField="Title" HeaderText="Title" /> 
    <asp:BoundField DataField="Price" HeaderText="Price" /> 
</Columns> 
</asp:GridView> 

Die Datasource meiner Gridview List<CartItem> ist.

Dies sind die Klassen

public class CartItem 
{ 
    private Movie _movieInCart; 
    private int _Count; 

    public CartItem() 
    { } 

    public CartItem(Movie movie, int count) 
    { 
     _movieInCart = movie; 
     _count= count; 
    } 


    public Film MovieInCart 
    { 
     get { return _movieInCart; } 
     set { _movieInCart = value; } 
    } 

    public int Count 
    { 
     get { return _count; } 
     set { _count = value; } 
    } 

    public double getSubTotal() 
    { 
     return _movieInCart.Price * _count; 
    } 
} 


public class Movie 
{ 
    private string _title; 
    private double _price; 

    public string Title 
    { 
     get { return _title; } 
     set { _title= value; } 
    } 

    public double Price 
    { 
     get { return _price; } 
     set { _price= value; } 
    }  

//More properties here 
} 

Anscheinend ist der Gridview nur die erste Ebene Eigenschaften zeigt, aber wie mache ich diese zweite Ebene Eigenschaften.

Vielen Dank, Vincent

Antwort

2

Ich glaube, Sie haben zwei Möglichkeiten:

  1. Eigenschaften hinzufügen für Titel und Preis, Delegierter auf dem Film-Objekt CartItem.
  2. Um zu verwenden TemplateField anstelle von BoundField.

Option 1:

public string Title 
{ 
    return _movieInCart != null ? _movieInCart.Title : null; 
} 

Option 2: (siehe reference)

<asp:TemplateField HeaderText="Title"> 
    <ItemTemplate> 
    <asp:Label 
     runat="server" 
     Text='<%# Bind("MovieInCart.Title") %>'> 
    </asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

Dank. Das funktioniert – Vinzcent

Verwandte Themen