2013-04-15 11 views
7

Ho un elenco di oggetti di carte di credito. La classe di carta di credito è il seguente:Binding List to 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() 
     { 

     } 
    } 
} 

In un'altra classe, sto cercando di impegnare la lista ad una visualizzazione a griglia come segue:

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

Tuttavia, sto ricevendo il seguente errore:

The data source for GridView with id 'GridView_List' did not have any properties or attributes from which to generate columns. Ensure that your data source has content. 

Qual è il problema? Ho controllato che l'elenco contenga effettivamente i dati, quindi non so perché non funzionerà? Come può essere risolto questo problema?

+0

Puoi per favore pubblicare il contenuto ASPX del controllo GridView_List? Sembra che GridView stia cercando di accedere a una colonna che non esiste nell'oggetto CreditCard. –

risposta

14

È necessario utilizzare le proprietà pubbliche per DataBinding. Aggiorna la tua classe come segue:

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

Lo sto facendo e ho ancora lo stesso problema. – Marnee

+0

@Marnee pubblica il tuo XAML e il codice in un'altra domanda SO in modo da poterti aiutare. Non c'è modo per noi di sapere cosa stai effettivamente facendo. –

+1

Grazie. Ho appena realizzato che sono stupido. Ho dimenticato di mettere il modificatore di accesso pubblico davanti alle mie proprietà. Scusate. – Marnee

5

Hai definito il tuo CreditCard come un oggetto con i campi. L'associazione dei dati può essere effettuata solo con le proprietà. Quindi, è necessario fare qualcosa di simile per tutti i campi:

public String A_Number { get; set; }