2013-04-15 138 views
7

我有一个信用卡对象的列表。信用卡类如下:绑定列表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() 
     { 

     } 
    } 
} 

在另一类,我想列表绑定到网格视图如下:

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

不过,我收到以下错误:

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. 

什么问题?我检查了列表中实际包含数据,所以我不知道它为什么不起作用?这个问题怎么解决?

+0

您可以发布GridView_List控件的ASPX内容吗?看起来像GridView试图访问您的CreditCard对象中不存在的列。 –

回答

14

您必须使用DataBinding的公共属性。更新您的课程如下:

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

我正在这样做,仍然有同样的问题。 – Marnee

+0

@Marnee在另一个SO问题中发布您的XAML和代码,以便我们提供帮助。我们无法知道你实际在做什么。 –

+1

谢谢。我只是意识到我很愚蠢。我忘了将公共访问修饰符放在我的属性前面。抱歉。 – Marnee

5

您已将CreditCard定义为带字段的对象。数据绑定只能通过属性来完成。因此,您需要为所有字段执行类似操作:

public String A_Number { get; set; }