FlexGrid for WinForms
マップリスト
> エディタ > マップリスト

マップリストは、グリッドに保存されているデータをユーザーが理解できる値にマップします。このようなマッピングは、実際にグリッドに保存されているデータがエンコードされていたり、ユーザーによる理解が難しい場合に、ユーザーフレンドリな値を表示するためによく使用されます。たとえば、従業員レコードのテーブルの場合、データベースには従業員 ID が保存されていても、管理職ユーザーには従業員の名前が表示されないと不便です。

マップリストエディタ

データマッピングの表示

FlexGrid でデータマッピングを実行するには、DataMap プロパティを使用します。 このプロパティには、データベース値とグリッドに表示される値をマップする IDictionary オブジェクトへの参照が含まれます。HashTableListDictionary、および SortedList は、有効なデータマップを提供する IDictionary オブジェクトの一例です。

次のコードは、WinForms FlexGrid でデータマップリストを表示する方法を示しています。

// データマップを作成します
ListDictionary customerNames = new ListDictionary();
customerNames.Add("AJK18F", "Sam Anders");
customerNames.Add("BBK21D", "Daneil");
customerNames.Add("AEF25N", "Henry Hussain");
customerNames.Add("BZD42S", "Owen Romanov");
customerNames.Add("AKC16G", "Serena Nguyen");

// データマップをflexgrid列に割り当てます
c1flexGrid1.Cols["Name"].DataMap = customerNames;                        
' データマップを作成します
Dim customerNames As ListDictionary = New ListDictionary()
customerNames.Add("AJK18F", "Sam Anders")
customerNames.Add("BBK21D", "Daneil")
customerNames.Add("AEF25N", "Henry Hussain")
customerNames.Add("BZD42S", "Owen Romanov")
customerNames.Add("AKC16G", "Serena Nguyen")

' データマップをflexgrid列に割り当てます
c1flexGrid1.Cols("Name").DataMap = customerNames     

HashTable、ListDictionary、SortedList の各クラスでは、項目の並び順が異なります。このため、編集可能な列でこれらのテーブルを使用する場合は、マップリストにレンダリングされる項目の順序も、リストの作成に使用されるキーとクラスによって異なります。

データマップのキーの型は、編集対象のセルの型と同じである必要があります。たとえば、列に短整数(Int16)が含まれている場合、その列に関連するデータマップには単整数のキーが含まれている必要があります。

イメージマップの表示

FlexGrid 列にイメージマップを表示するには、Row オブジェクトまたは Column オブジェクトの ImageMap プロパティを、画像と対応するテキスト値をマップする IDictionary オブジェクトに設定する必要があります。 たとえば、列に国名が格納されている場合は、このプロパティを使用して、対応する国旗を表示できます。オブジェクトの ImageAndText プロパティを使用して、画像のみを表示するか、画像とテキストを表示するかを制御できます。

WinForms FlexGrid でイメージマップを作成するには、次のコードを使用します。

 Hashtable ht = new Hashtable();
 foreach (Row row in c1flexGrid1.Rows)
 {
     ht.Add(row["CustomerID"], LoadImage(row["Photo"] as byte[]));
 }
 
 // ImageMapをPhoto列に割り当てます
 c1flexGrid1.Cols["Photo"].ImageMap = ht;

 // アスペクト比を維持しながら、画像をセルに合わせます
 c1flexGrid1.Cols["Photo"].ImageAlign = ImageAlignEnum.Scale;
 c1flexGrid1.Cols["Photo"].Width = 80;                       
    Dim ht As Hashtable = New Hashtable()

    For Each row As Row In c1flexGrid1.Rows
        ht.Add(row("CustomerID"), LoadImage(TryCast(row("Photo"), Byte())))
    Next

    ' ImageMapをPhoto列に割り当てます
    c1flexGrid1.Cols("Photo").ImageMap = ht

    ' アスペクト比を維持しながら、画像をセルに合わせます
    c1flexGrid1.Cols("Photo").ImageAlign = ImageAlignEnum.Scale
    c1flexGrid1.Cols("Photo").Width = 80