0

カスタムリストをデータグリッドにバインドするプロジェクトに取り組んでいました。現在のアプリケーションに問題があるのではないかと考えたので、4.0 で同じ問題を抱えた新しいサンプル アプリケーションを作成することにしました。

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form` 
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void populate()
        {
            List<BillInfoCustom> oSalesList = new List<BillInfoCustom>();

            BillInfoCustom oSalesType = new BillInfoCustom() { BillId = 1, BillDate = DateTime.Now.ToLongDateString(), CashPayment = 10, CreditCardPaymet = 20, CustomerName = "asda", TotalPrice = 20.0 };

            BillInfoCustom oSalesType2 = new BillInfoCustom() { BillId = 1, BillDate = DateTime.Now.ToLongDateString(), CashPayment = 10, CreditCardPaymet = 20, CustomerName = "asda", TotalPrice = 20.0 };

            BillInfoCustom oSalesType3 = new BillInfoCustom() { BillId = 1, BillDate = DateTime.Now.ToLongDateString(), CashPayment = 10, CreditCardPaymet = 20, CustomerName = "asda", TotalPrice = 20.0 };

            oSalesList.Add(oSalesType);
            oSalesList.Add(oSalesType2);
            oSalesList.Add(oSalesType3);

            dataGridView1.DataSource = oSalesList;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            populate();
        }
    }

    public class BillInfoCustom
    {
        public int BillId;
        public double TotalPrice;
        public double CashPayment;
        public double CreditCardPaymet;
        public string CustomerName;
        public string BillDate;
    }
}

ボタンを押した後の出力は次のとおりです。

出力

4

1 に答える 1

1

データ バインディングは、フィールドではなくプロパティで機能します。{ get; set; }各メンバーに追加します。次のように変更してみてください:

public class BillInfoCustom
{
    public int BillId { get; set; }

    public double TotalPrice{ get; set; }

    public double CashPayment { get; set; }

    public double CreditCardPaymet { get; set; }

    public string CustomerName { get; set; }

    public string BillDate { get; set; }
}
于 2013-03-28T08:22:22.253 に答える