クレジットカードオブジェクトのリストがあります。クレジットカードのクラスは次のとおりです。
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.
何が問題ですか?リストに実際にデータが含まれていることを確認したので、なぜ機能しないのかわかりませんか?この問題はどのように解決できますか?
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 { get; set; }
public CreditCard() { }
}
CreditCard
をフィールドを持つオブジェクトとして定義しました。データバインディングはプロパティでのみ実行できます。したがって、すべてのフィールドに対して次のようなことを行う必要があります。
public String A_Number { get; set; }