Imports Infragistics.Win.UltraDataGridView
UltraDataGridViewColumns は DataGridViewColumn から派生したコンポーネントです。これらの列は、System.Windows.Forms 名前空間に属する標準の DataGridViewColumn 派生クラス(DataGridViewTextColumn や DataGridViewCheckBoxColumn など)と同じように使用できます。UltraDataGridViewColumns には WinEditors の機能が追加されています。そのため、Appearances などの Infragistics 共通の機能を利用できます。また、日付、イメージ、計算機、ドロップダウン リストなど多くの機能専用の列を使用することも可能です。
13 種類の異なる列タイプがあります。どの列タイプも基本機能は同じですが、それぞれが特定の目的に特化されています。この例では、DataGridView で最も一般的な列タイプを利用するアプリケーションを作成します。
新しいプロジェクトを作成します。
Visual Studio 2005 で新しいプロジェクトを作成します。
DataGridView コントロールをフォームに追加します。
DataGridView は幅広いデータ ソースをサポートしますが、この例では WinDataSource を使用します。UltraDataSource コンポーネントをフォームに追加します。
スキーマを設定します。
コンポーネント トレイにある UltraDataSource を右クリックして [UltraDataSource デザイナ] を選択します。
次の列を UltraDataSource の Band 0 に指定のデータ型で追加します。
ProductID – System.Int32
ProductName – System.String
Size – System.Int32
Color – System.Drawing.Color
Price – System.Decimal
InStock – System.Boolean
必要であれば、[データ入力] 画面に切り替えて製品テーブルにテスト データを入力します。Size の値は 1、2、3 のいずれかにしてください。
[OK] をクリックして UltraDataSource の設定を終了します。
グリッドをバインドします。
DataGridView の DataSource を UltraDataSource1 に設定します。
DataMember を Band 0 に設定します。
この時点で、フォーム上の DataGridView がデータ ソースの列ごとに列を自動的に作成するのが分かります。これらの列は、Visual Studio 2005 で使用可能なデフォルトの DataGridViewColumns のみを使用して作成されます。そのため、すべての列を削除します。グリッドの Columns プロパティで省略(…)ボタンをクリックして [列の編集] ダイアログを表示します。すべての列がなくなるまで [削除] をクリックします。次に [OK] をクリックします。
プロジェクトを参照します。
UltraDataGridViewColumns を使用するためには、次の参照をプロジェクトに追加する必要があります。
Infragistics.Shared.v21.2
Infragistics.Win.v21.2
注: このプロジェクトにはすでに UltraDataSource コンポーネントが含まれているため、これら 2 つの参照はすでにプロジェクトに追加されています。
これら 2 つのアセンブリは Infragistics フレームワークであり、ほとんどすべて(ただし完全にすべてではない)の UltraDataGridViewColumns へのアクセスを可能にします。
UltraCheckEditorColumn
UltraColorPickerColumn
UltraComboEditorColumn
UltraDateTimeEditorColumn
UltraFontNameEditorColumn
UltraImageRendererColumn
UltraMaskEditorColumn
UltraOptionSetEditorColumn
UltraProgressBarEditorColumn
UltraTextEditorColumn
UltraTimeZoneEditorColumn
次の 2 つの追加の列タイプは他のアセンブリによって提供されます。
UltraGridComboColumn は Infragistics.Win.UltraWinGrid.v21.2 アセンブリによって提供されます。
UltraCalendarComboColumn は Infragistics.Win.UltraWinSchedule.v21.2 アセンブリによって提供されます。
この例ではこれら 2 つの列タイプを利用しないので、これらを追加する必要はありません。
ランタイムに列を追加します。
コードで列を作成するには、UltraDataGridView 名前空間を含むように using/imports 文をプロジェクトに追加します。
Visual Basic の場合:
Imports Infragistics.Win.UltraDataGridView
C# の場合:
using Infragistics.Win.UltraDataGridView;
Form_Load イベントのハンドラに次のコードを追加して列を作成します。
Visual Basic の場合:
Dim column As DataGridViewColumn = Nothing ' Product ID 列 column = New UltraTextEditorColumn() column.Name = "ProductID" column.HeaderText = "Product ID" column.DataPropertyName = "ProductID" Me.dataGridView1.Columns.Add(column) ' Product Name 列 column = New UltraTextEditorColumn() column.Name = "ProductName" column.HeaderText = "Product Name" column.DataPropertyName = "ProductName" Me.dataGridView1.Columns.Add(column) ' Product Name 列 column = New UltraComboEditorColumn() column.Name = "Size" column.HeaderText = "Size" column.DataPropertyName = "Size" Me.dataGridView1.Columns.Add(column) column = New UltraColorPickerColumn() column.Name = "Color" column.HeaderText = "Color" column.DataPropertyName = "Color" Me.dataGridView1.Columns.Add(column) column = New UltraMaskEditorColumn() column.Name = "Price" column.HeaderText = "Price" column.DataPropertyName = "Price" Me.dataGridView1.Columns.Add(column) column = New UltraCheckEditorColumn() column.Name = "In Stock" column.HeaderText = "In Stock" column.DataPropertyName = "In Stock" Me.dataGridView1.Columns.Add(column)
C# の場合:
DataGridViewColumn column = null; // Product ID 列 column = new UltraTextEditorColumn(); column.Name = "ProductID"; column.HeaderText = "Product ID"; column.DataPropertyName = "ProductID"; this.dataGridView1.Columns.Add(column); // Product Name 列 column = new UltraTextEditorColumn(); column.Name = "ProductName"; column.HeaderText = "Product Name"; column.DataPropertyName = "ProductName"; this.dataGridView1.Columns.Add(column); // Product Name 列 column = new UltraComboEditorColumn(); column.Name = "Size"; column.HeaderText = "Size"; column.DataPropertyName = "Size"; this.dataGridView1.Columns.Add(column); column = new UltraColorPickerColumn(); column.Name = "Color"; column.HeaderText = "Color"; column.DataPropertyName = "Color"; this.dataGridView1.Columns.Add(column); column = new UltraMaskEditorColumn(); column.Name = "Price"; column.HeaderText = "Price"; column.DataPropertyName = "Price"; this.dataGridView1.Columns.Add(column); column = new UltraCheckEditorColumn(); column.Name = "In Stock"; column.HeaderText = "In Stock"; column.DataPropertyName = "In Stock"; this.dataGridView1.Columns.Add(column);
列のプロパティを設定します。
ここでアプリケーションを実行した場合、グリッドを編集して新しい行を追加できます。
ただし、Size 列のドロップダウン矢印は機能しません。これはリストに項目がひとつもないためです。
これを修正するには、次のコードを Form_Load イベントの最後に追加します。
Visual Basic の場合:
' Size 列を UltraComboEditorColumn にキャストします。 ' これで UltraComboEditorColumn 固有のプロパティにアクセスできるようになります。 Dim ultraComboEditorColumn As UltraComboEditorColumn = _ DirectCast(Me.dataGridView1.Columns("Size"), UltraComboEditorColumn) ' リストに値を移植します。 UltraComboEditorColumn.ValueList.ValueListItems.Add(1, "Small") UltraComboEditorColumn.ValueList.ValueListItems.Add(2, "Medium") UltraComboEditorColumn.ValueList.ValueListItems.Add(3, "Large")
C# の場合:
// Size 列を UltraComboEditorColumn にキャストします。 // これで UltraComboEditorColumn 固有のプロパティにアクセスできるようになります。 UltraComboEditorColumn ultraComboEditorColumn = this.dataGridView1.Columns["Size"] as UltraComboEditorColumn; // リストに値を移植します。 ultraComboEditorColumn.ValueList.ValueListItems.Add(1, "Small"); ultraComboEditorColumn.ValueList.ValueListItems.Add(2, "Medium"); ultraComboEditorColumn.ValueList.ValueListItems.Add(3, "Large");
アプリケーションを実行します。
アプリケーションを実行して各列を編集できます。Size 列のドロップダウンリストも正常に機能し、項目を選択すると DisplayText が表示されて、基になる DataValue が整数列に格納されることを確かめてください。