2010-11-20 20 views
1

Hey,
Je voudrais montrer le titre et le prix d'un film dans mon GridView. Le titre et le prix sont des propriétés de la classe Movie and Movie est une propriété de la classe CartItem.Lier la propriété de propriété à GridView

Voici le code de mon 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> 

Le DataSource de mon gridview est List<CartItem>.

Ce sont les classes

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 
} 

Apparemment, le GridView ne montre que les propriétés de premier niveau, mais comment puis-je voir ces propriétés du second niveau.

Un grand merci, Vincent

Répondre

2

Je pense que vous avez deux options:

  1. Ajouter biens immobiliers à CartItem pour le titre et le prix qui délèguent à l'objet film.
  2. Passez à l'utilisation de TemplateField au lieu de BoundField.

Option 1:

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

Option 2: (voir reference)

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

Merci. Cela marche – Vinzcent