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という列だけがグリッドに表示されます。
値は当然文字数です。
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場