web-dev-qa-db-ja.com

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.

何が問題ですか?リストに実際にデータが含まれていることを確認したので、なぜ機能しないのかわかりませんか?この問題はどのように解決できますか?

8
Joe Borg

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() { }
    }
16
d.moncada

CreditCardをフィールドを持つオブジェクトとして定義しました。データバインディングはプロパティでのみ実行できます。したがって、すべてのフィールドに対して次のようなことを行う必要があります。

public String A_Number { get; set; }
5
Floremin