FlexGrid for WinForms
MultiColumnDictionary クラス
メンバ  使用例 

C1.Win.FlexGrid.6 アセンブリ > C1.Win.FlexGrid 名前空間 : MultiColumnDictionary クラス
IC1MultiColumnDictionaryを実装し、複数列コンボエディタを作成するための DataMap 列として使用できるクラス。
オブジェクト モデル
MultiColumnDictionary クラス
シンタックス
'宣言
 
Public Class MultiColumnDictionary 
   Inherits System.Collections.Specialized.ListDictionary
   Implements IC1MultiColumnDictionaryIC1MultiColumnDictionary2 
public class MultiColumnDictionary : System.Collections.Specialized.ListDictionary, IC1MultiColumnDictionaryIC1MultiColumnDictionary2  
解説
MultiColumnDictionaryクラスを使用して、文字列に基づく単純なデータマップ、またはデータソースオブジェクトからデータを取得する連結データマップを実装できます。
使用例

次のコードは、非連結2列データマップを作成し、それをグリッド列に割り当てます。

マップは3つの項目で構成され、各項目に2つの列があります。 autoKeysパラメータはマップのコンストラクタで true に設定されるため、マップの各値には一意の整数キーが対応し、これらの整数がグリッドセルに格納されます。 autoKeysが false に設定されている場合は、文字列自身がキーとして使用され、グリッドセルに格納されます。

次のコードは、連結データマップを作成し、それをグリッド列に割り当てます。

このマップは Employees DataTable に連結されます。 keyColumnパラメータは「EmployeeID」に設定され、このフィールドがキーとして使用されます。グリッドが編集されると、これらのセルに格納された値が従業員の ID になります。ただし、この値がグリッドに表示されることはありません。

ドロップダウンリストには、 columnNamesパラメータで指定された従業員の名、姓、国が表示されます。

リストが閉じられると、グリッドには、 displayColumnパラメータで指定された従業員の姓が表示されます。

このマップはデータソースに動的に連結されているため、従業員テーブルが変更されると、エディタリストは自動的に変更を反映します。

また、自動検索やダブルクリックによる順次選択など、通常のコンボボックス編集機能も動作します。

MultiColumnDictionary サンプルも参照してください。

' 文字列に基づく MultiColumnDictionary を作成し、それを列に割り当てます。
' メモ : これは、項目ごとに int 型のキーを自動的に生成します。
' キー値はグリッドに格納されます。
Dim text As String = "Row1, Col1\tRow1, Col2|Row2, Col1\tRow2, Col2".Replace("\t", vbTab)
Dim map As MultiColumnDictionary = New MultiColumnDictionary(text, 0, True)
flex.Cols(1).DataMap = map
// 文字列に基づく MultiColumnDictionary を作成し、それを列に割り当てます。
// メモ : これは、項目ごとに int 型のキーを自動的に生成します。
// キー値はグリッドに格納されます。
string text = "Row1, Col1\tRow1, Col2|Row2, Col1\tRow2, Col3|Row2, Col1\tRow3, Col2";
MultiColumnDictionary map = new MultiColumnDictionary(text, 0, true);
flex.Cols[1].DataMap = map;
' データに基づく MultiColumnDictionary を作成し、それを列に割り当てます。
' メモ : データソースが変更されると、リストが自動的に更新されます。
Dim dt As DataTable = GetDataTable("employees")
Dim columnNames() As String = New String() {"FirstName", "LastName", "Country"}
Dim map As MultiColumnDictionary = New MultiColumnDictionary(dt, "EmployeeID", columnNames, 1)
flex.Cols(2).DataMap = map
// データに基づく MultiColumnDictionary を作成し、それを列に割り当てます。
// メモ : データソースが変更されると、リストが自動的に更新されます。
DataTable dt = GetDataTable("employees");
string[] columnNames = new string[] { "FirstName", "LastName", "Country" };
MultiColumnDictionary map = new MultiColumnDictionary(dt, "EmployeeID", columnNames, 1);
flex.Cols[2].DataMap = map;
継承階層

System.Object
   System.Collections.Specialized.ListDictionary
      C1.Win.FlexGrid.MultiColumnDictionary

参照

MultiColumnDictionary メンバ
C1.Win.FlexGrid 名前空間