5

Item3 つのプロパティを持つクラスを想像してください。

  • アイテム名(文字列)
  • 数量 (整数)
  • ItemPricePrice ( VendorName と Price の 2 つのプロパティを持つクラスの配列/リスト)。

基本的に、このクラスを、各行がクラス Item である DataGridView にバインドしたいと考えています。問題は、さまざまな数のベンダーが存在し (または後で編集できる)、データ バインディングがこの動的な数のベンダーをサポートする必要があることです。

また、おまけとして、ベンダーの価格に数量を掛けて表示する列を追加したいと考えています。

私は仮想モードを使いたくありません(それが現在このタスクを達成している方法です)。

ありがとうございました!

4

2 に答える 2

0

これを実現する 1 つの方法は、クラス Item (または新しいクラス、または匿名クラス) に文字列プロパティを作成し、このプロパティを実装して、すべてのベンダーとアイテムの価格を連結することです。

これの欠点は、すべての項目を同じ列の文字列に入れると見苦しく見えることと、直感的な方法で項目を編集することができないことです。

ただし、任意の数のベンダーと価格を表示するという目標は達成され、ベンダーの価格に数量を掛けたものを簡単に追加できます。

于 2012-10-25T04:18:07.617 に答える
0

動的に作成されたデータグリッドビューにテーブルをマップできます。コード スニペットの例を次に示します。

    public class ItemBinding
       {
        List<Item> itemList = new List<Item>();
        Item it = null;
        DataRow dr = null;
        public void mapping()
          {
                  for (int i = 0; i <= 4; i++)
                     {
                      it = new Item();
                      it.qty = i;
                      it.name = "name" + i;
                      it.itemprice.Vendorname="vendor" + i;
                      it.itemprice.price = 20 * i;
                      itemList.Add(it);
                     }
          }
         public void binding()
         {
              DataTable dt = new DataTable();

                   dt.Columns.Add(new DataColumn("item", typeof(string)));
                   dt.Columns.Add(new DataColumn("quantity", typeof(int)));
                   dt.Columns.Add(new DataColumn("vendor", typeof(string)));

              //item list contains the detail of the class

                    foreach (Item c in itemList)
                         {
                            dr = dt.NewRow();

                            dr[0] = c.qty;
                            dr[1] = c.name;
                            dr[2] = c.itemprice.Vendorname;;
                            dt.Rows.Add(dr);
                          }
                  dataGridView1.AutoGenerateColumns = true;
                  dataGridView1.DataSource = dt;
                   }
          }
    public class Item
         {
            public int qty{ get; set; }
            public string name { get; set; }
            public ItemPrice itemprice { get; set; }
            public Item()
                 {
                   this.itemprice = new ItemPrice();
                  }
         }

          public class ItemPrice
            {
             public string Vendorname { get; set; }      
             public int price { get; set; }
            }

この場合、itemprice にはネストされた 2 つのプロパティがあり、継承することもできます。これはあなたを助けるかもしれません。

于 2012-12-24T13:41:22.510 に答える