作成日: 2020/09/16 最終更新日: 2020/09/16
文書種別
使用方法
詳細
C1FlexGridでは、IDictionaryを実装しているクラス(Hashtable、ListDictionary、および SortedList )をDataMap として使用できます。
ドロップダウンコンボのリスト項目にDataMapを指定し、AfterEditイベントにて、C1FlexGridのGetDataメソッドで取得したDataMapのキー値をセルに設定することで、コンボボックスのリスト項目とは別の値をC1FlexGridに表示することが可能です。
なお、使用するクラスによって、ドロップダウンリストに表示されるリスト項目の順序が異なります。
(1)ListDictionaryをDataMapとして使用する
※ListDictionaryクラスを使用すると、コンボボックスのリスト項目の並び順は、データを追加した順になります。
◎サンプルコード(VB)
(2)SortedListをDataMapとして使用する
※SortedListクラスを使用すると、コンボボックスのリスト項目の並び順は、キー(DataMapの第1項)でソートされます。
◎サンプルコード(VB)
(3)HashtableをDataMapとして使用する
※Hashtableクラスを使用すると、コンボボックスのリスト項目の並び順は、任意の順序になります。
◎サンプルコード(VB)
ドロップダウンコンボのリスト項目にDataMapを指定し、AfterEditイベントにて、C1FlexGridのGetDataメソッドで取得したDataMapのキー値をセルに設定することで、コンボボックスのリスト項目とは別の値をC1FlexGridに表示することが可能です。
なお、使用するクラスによって、ドロップダウンリストに表示されるリスト項目の順序が異なります。
(1)ListDictionaryをDataMapとして使用する
※ListDictionaryクラスを使用すると、コンボボックスのリスト項目の並び順は、データを追加した順になります。
◎サンプルコード(VB)
Dim dtMap1 As System.Collections.Specialized.ListDictionary = New System.Collections.Specialized.ListDictionary()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dtMap1.Add(1, "A01")
dtMap1.Add(2, "A02")
dtMap1.Add(3, "A03")
dtMap1.Add(4, "A04")
dtMap1.Add(5, "A05")
C1FlexGrid1.Cols(1).Caption = "DataMap_1"
C1FlexGrid1.Cols(1).DataMap = dtMap1
End Sub
Private Sub C1FlexGrid1_AfterEdit(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.AfterEdit
If (e.Col = 1) Then
C1FlexGrid1(e.Row, e.Col) = C1FlexGrid1.GetData(e.Row, e.Col).ToString
End If
End Sub
◎サンプルコード(C#) System.Collections.Specialized.ListDictionary dtMap1 = new System.Collections.Specialized.ListDictionary();
private void Form1_Load(object sender, EventArgs e)
{
dtMap.Add(1, "A01");
dtMap.Add(2, "A02");
dtMap.Add(3, "A03");
dtMap.Add(4, "A04");
dtMap.Add(5, "A05");
c1FlexGrid1.Cols[1].Caption = "DataMap_1";
c1FlexGrid1.Cols[1].DataMap = dtMap;
}
private void c1FlexGrid1_AfterEdit(object sender, RowColEventArgs e)
{
if (e.Col == 1)
{
c1FlexGrid1[e.Row, e.Col] = c1FlexGrid1.GetData(e.Row, e.Col).ToString();
}
}
(2)SortedListをDataMapとして使用する
※SortedListクラスを使用すると、コンボボックスのリスト項目の並び順は、キー(DataMapの第1項)でソートされます。
◎サンプルコード(VB)
Dim dtMap2 As System.Collections.SortedList = New System.Collections.SortedList()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dtMap2.Add(40, "B01")
dtMap2.Add(50, "B02")
dtMap2.Add(10, "B03")
dtMap2.Add(20, "B04")
dtMap2.Add(30, "B05")
C1FlexGrid1.Cols(2).Caption = "DataMap_2"
C1FlexGrid1.Cols(2).DataMap = dtMap2
End Sub
Private Sub C1FlexGrid1_AfterEdit(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.AfterEdit
If (e.Col = 2) Then
C1FlexGrid1(e.Row, e.Col) = C1FlexGrid1.GetData(e.Row, e.Col).ToString
End If
End Sub
◎サンプルコード(C#) System.Collections.SortedList dtMap2 = new System.Collections.SortedList();
private void Form1_Load(object sender, EventArgs e)
{
// (2)SortedListをDataMapとして使用する
dtMap2.Add(40, "B01");
dtMap2.Add(50, "B02");
dtMap2.Add(10, "B03");
dtMap2.Add(20, "B04");
dtMap2.Add(30, "B05");
c1FlexGrid1.Cols[2].Caption = "DataMap_2";
c1FlexGrid1.Cols[2].DataMap = dtMap2;
}
private void c1FlexGrid1_AfterEdit(object sender, RowColEventArgs e)
{
if (e.Col == 2)
{
c1FlexGrid1[e.Row, e.Col] = c1FlexGrid1.GetData(e.Row, e.Col).ToString();
}
}
(3)HashtableをDataMapとして使用する
※Hashtableクラスを使用すると、コンボボックスのリスト項目の並び順は、任意の順序になります。
◎サンプルコード(VB)
Dim dtMap3 As System.Collections.Hashtable = New System.Collections.Hashtable()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dtMap3.Add(100, "C01")
dtMap3.Add(200, "C02")
dtMap3.Add(300, "C03")
dtMap3.Add(400, "C04")
dtMap3.Add(500, "C05")
C1FlexGrid1.Cols(3).Caption = "DataMap_3"
C1FlexGrid1.Cols(3).DataMap = dtMap3
End Sub
Private Sub C1FlexGrid1_AfterEdit(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.AfterEdit
If (e.Col = 3) Then
C1FlexGrid1(e.Row, e.Col) = C1FlexGrid1.GetData(e.Row, e.Col).ToString
End If
End Sub
◎サンプルコード(C#) System.Collections.Hashtable dtMap3 = new System.Collections.Hashtable();
private void Form1_Load(object sender, EventArgs e)
{
dtMap3.Add(100, "C01");
dtMap3.Add(200, "C02");
dtMap3.Add(300, "C03");
dtMap3.Add(400, "C04");
dtMap3.Add(500, "C05");
c1FlexGrid1.Cols[3].Caption = "DataMap_3";
c1FlexGrid1.Cols[3].DataMap = dtMap3;
}
private void c1FlexGrid1_AfterEdit(object sender, RowColEventArgs e)
{
if (e.Col == 3)
{
c1FlexGrid1[e.Row, e.Col] = c1FlexGrid1.GetData(e.Row, e.Col).ToString();
}
}
関連情報
旧文書番号
86007