2013-04-15 13 views
7

Mam listę obiektów kart kredytowych. Klasa karta kredytowa jest następujący:Lista powiązań z GridView

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace Client 
{ 
    public class CreditCard 
    { 
     public String A_Number; 
     public String A_Name; 
     public String A_Type; 
     public String A_Owner_Type; 
     public String Bank_City; 
     public String Bank_State; 
     public String Bank_ZIP; 
     public String Balance; 
     public String C_Username; 

     public CreditCard() 
     { 

     } 
    } 
} 

W innej klasy, Próbuję powiązać listy do widoku siatki, co następuje:

protected void Page_Load(object sender, EventArgs e) 
     { 
      List<CreditCard> list = (List<CreditCard>)Session["list"]; 
      GridView_List.DataSource = list; 
      GridView_List.DataBind(); 
     } 

Jednak ja otrzymuję następujący błąd:

Na czym polega problem? Sprawdziłem, czy lista rzeczywiście zawiera dane, więc nie wiem, dlaczego to nie zadziała? W jaki sposób można rozwiązać ten problem?

+0

Czy możesz opublikować zawartość ASPX kontrolki GridView_List? Wygląda na to, że GridView próbuje uzyskać dostęp do kolumny, która nie istnieje w twoim obiekcie CreditCard. –

Odpowiedz

14

Musisz użyć właściwości publicznych dla DataBinding. Zaktualizuj swoją klasę w następujący sposób:

public class CreditCard 
    { 
     public String A_Number { get; set; } 
     public String A_Name { get; set; } 
     public String A_Type { get; set; } 
     public String A_Owner_Type { get; set; } 
     public String Bank_City { get; set; } 
     public String Bank_State { get; set; } 
     public String Bank_ZIP { get; set; } 
     public String Balance { get; set; } 
     public String C_Username; 

     public CreditCard() { } 
    } 
+0

Robię to i nadal mam ten sam problem. – Marnee

+0

@Marnee opublikuj swój XAML i kod w innym pytaniu SO, abyśmy mogli Ci pomóc. Nie wiemy, co właściwie robisz. –

+1

Dziękuję. Właśnie zdałem sobie sprawę, że jestem głupi. Zapomniałem umieścić modyfikator dostępu publicznego przed moimi właściwościami. Przepraszam. – Marnee

5

Zdefiniowałeś swój CreditCard jako obiekt z polami. Powiązanie danych można wykonać tylko za pomocą właściwości. Tak więc, musisz zrobić coś takiego dla wszystkich pól:

public String A_Number { get; set; } 
Powiązane problemy