いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

DataGridView入門記-07 (データバインド (IList))(表示)

DataGridViewは、以下のインターフェースの実装クラスをバインドする
ことができます。

  • IList
  • IListSource
  • IBindingList
  • IBindingSource

代表的な実装クラスは、

  • ArrayList, List
  • DataTable, DataSet
  • BindingList
  • BindingSource

ですね。最もよく使うのはおそらく.net ver2.0から
追加されたBindingSourceでしょう。


データをバインドするには、DataGridViewのDataSourceプロパティに
該当オブジェクトをセットします。複数のテーブル情報を保持している
DataSetなどでは、DataMemberプロパティも一緒に設定します。


今回は、IListのバインドをやってみます。
設定して表示するところまでですが。

// vim:set ts=4 sw=4 et ws is nowrap ft=cs:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

using Gsf.Samples.Utility;

namespace Gsf.Samples.DGV{

    public class DataGridViewSample07 : BaseForm{

        public DataGridViewSample07() : base("DataGridViewSample07"){
            // nop;
        }

        protected override void InitializeComponents(){
            DataGridView grid = new DataGridView();

            grid.Dock                = DockStyle.Fill;
            //
            // カラム生成を自動に設定.
            //
            grid.AutoGenerateColumns = true;
            grid.DataSource          = GetDataSource();

            Controls.Add(grid);
        }

        private IList<D> GetDataSource(){
            List<D> list = new List<D>();

            list.Add(new D("hoge", 20));
            list.Add(new D("hehe", 30));

            return list;
        }

        static void Main(){
            ApplicationUtility.Launch("Gsf.Samples.DGV.DataGridViewSample07");
        }
    }

    class D{
        string _name;
        int    _age;

        public D(string name, int age){
            _name = name;
            _age  = age;
        }

        public string Name{
            get{
                return _name;
            }
        }

        public int Age{
            get{
                return _age;
            }
        }
    }
}


今回は、面倒なのでカラムは自動作成にしています。
この場合に、表示されるのはパブリックプロパティの
名前と値になります。(バインド先がIListの場合です)


今回のサンプルでは、クラスDに存在するプロパティは
AgeとNameなのでその2つが表示されます。


例を挙げると

list.Add("hoge");
list.Add("hehe");


のように、Listをデータソースとした
場合は、Lengthという列だけがグリッドに表示されます。
値は当然文字数です。



================================
過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。