作成日: 2020/04/06 最終更新日: 2020/04/06
文書種別
使用方法
詳細
DataMapはデータ値を表示値に変換するための機能です。ドロップダウンから表示値を選択した場合はその値を基にデータ値への逆変換が行われるので、データ値と表示値が一意で対応するように定義することが前提とされます。そのため、同じ表示値を持つListDictionaryをDataMapに設定した場合は、その表示値に対して最初に検出されたリスト項目の値が、データ値として常に取得されます。
この動作を避け、同じリスト項目でも、選択した位置に応じたデータ値を取得する方法として、MultiColumnDictionaryを使用する手段が考えられます。この場合、コンボボックスの項目はMultiColumnItem値となり、各リスト項目は異なるオブジェクトとして区別されます。
◎サンプルコード(VB)
この動作を避け、同じリスト項目でも、選択した位置に応じたデータ値を取得する方法として、MultiColumnDictionaryを使用する手段が考えられます。この場合、コンボボックスの項目はMultiColumnItem値となり、各リスト項目は異なるオブジェクトとして区別されます。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable("Test")
dt.Columns.Add("Code", GetType(Int32))
dt.Columns.Add("Name", GetType(String))
dt.Rows.Add(1, "AAAA")
dt.Rows.Add(2, "AAAA")
dt.Rows.Add(3, "BBBB")
Dim map As MultiColumnDictionary = New MultiColumnDictionary(dt, "Code", New String() {"Code", "Name"}, 1)
C1FlexGrid1.Cols(1).DataMap = map
End Sub
Private Sub C1FlexGrid1_AfterEdit(sender As Object, e As RowColEventArgs) Handles C1FlexGrid1.AfterEdit
Console.WriteLine($"AfterEdit: row={e.Row} col={e.Col} value={C1FlexGrid1(e.Row, e.Col)}")
End Sub
◎サンプルコード(C#)private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable("Test");
dt.Columns.Add("Code", typeof(Int32));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "AAAA");
dt.Rows.Add(2, "AAAA");
dt.Rows.Add(3, "BBBB");
MultiColumnDictionary map = new MultiColumnDictionary(dt, "Code", new string[] {"Code", "Name"}, 1);
c1FlexGrid1.Cols[1].DataMap = map;
}
private void c1FlexGrid1_AfterEdit(object sender, RowColEventArgs e)
{
Console.WriteLine($"AfterEdit: row={e.Row} col={e.Col} value={c1FlexGrid1[e.Row, e.Col]}");
}
旧文書番号
85138