ComboBoxCell の値として選択されたインデックスを格納する方法
対象製品
MultiRow for Windows Forms 5.0J
詳細
既定では ComboBoxCell は、セルの値としてドロップダウンリストで選択されたアイテムの文字列を保持します。たとえば、ドロップダウンリストに次のようなアイテムが存在する場合、
フォーム上の ComboBox コントロールのように、選択されたアイテムのインデックス(ComboBox.SelectedIndex)を取得するには、次のようにデータソースを作成し、セルの値として格納するインデックスを指定する方法があります。
[Visual Basic]
[C#]
この結果は、「BBB」を選択した場合に ComboBoxCell.Value の値は数値の 1 となります。
セルの値を確認するには、次のコードを実行します。アイテムが選択されていない場合は、null (Visual Basic では Nothing)が返ります。-1 が返らないことを注意してください。
[Visual Basic]
[C#]
- AAA
- BBB
- CCC
フォーム上の ComboBox コントロールのように、選択されたアイテムのインデックス(ComboBox.SelectedIndex)を取得するには、次のようにデータソースを作成し、セルの値として格納するインデックスを指定する方法があります。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
' サンプルのテーブルを作成する
Dim dataTable As DataTable = New DataTable("DropDownListItems")
dataTable.Columns.Add(New DataColumn("Text", GetType(System.String)))
dataTable.Columns.Add(New DataColumn("Index", GetType(System.Int32)))
dataTable.LoadDataRow(New Object() {"AAA", 0}, True)
dataTable.LoadDataRow(New Object() {"BBB", 1}, True)
dataTable.LoadDataRow(New Object() {"CCC", 2}, True)
' GcMultiRow のテンプレートを作成する
Dim template As Template = New Template()
Dim columnHeaderSection1 As ColumnHeaderSection = New ColumnHeaderSection()
Dim columnHeaderCell1 As ColumnHeaderCell = New ColumnHeaderCell()
Dim comboBoxCell1 As ComboBoxCell = New ComboBoxCell()
comboBoxCell1.DataSource = dataTable
comboBoxCell1.DisplayMember = "Text"
comboBoxCell1.ValueMember = "Index"
template.Width = comboBoxCell1.Size.Width
template.Row.Cells.Add(comboBoxCell1)
template.Row.Height = comboBoxCell1.Size.Height
columnHeaderSection1.Cells.Add(columnHeaderCell1)
columnHeaderSection1.Height = columnHeaderCell1.Size.Height
template.ColumnHeaders.Add(columnHeaderSection1)
GcMultiRow1.Template = template
GcMultiRow1.RowCount = 10
' サンプルのテーブルを作成する
Dim dataTable As DataTable = New DataTable("DropDownListItems")
dataTable.Columns.Add(New DataColumn("Text", GetType(System.String)))
dataTable.Columns.Add(New DataColumn("Index", GetType(System.Int32)))
dataTable.LoadDataRow(New Object() {"AAA", 0}, True)
dataTable.LoadDataRow(New Object() {"BBB", 1}, True)
dataTable.LoadDataRow(New Object() {"CCC", 2}, True)
' GcMultiRow のテンプレートを作成する
Dim template As Template = New Template()
Dim columnHeaderSection1 As ColumnHeaderSection = New ColumnHeaderSection()
Dim columnHeaderCell1 As ColumnHeaderCell = New ColumnHeaderCell()
Dim comboBoxCell1 As ComboBoxCell = New ComboBoxCell()
comboBoxCell1.DataSource = dataTable
comboBoxCell1.DisplayMember = "Text"
comboBoxCell1.ValueMember = "Index"
template.Width = comboBoxCell1.Size.Width
template.Row.Cells.Add(comboBoxCell1)
template.Row.Height = comboBoxCell1.Size.Height
columnHeaderSection1.Cells.Add(columnHeaderCell1)
columnHeaderSection1.Height = columnHeaderCell1.Size.Height
template.ColumnHeaders.Add(columnHeaderSection1)
GcMultiRow1.Template = template
GcMultiRow1.RowCount = 10
[C#]
using GrapeCity.Win.MultiRow;
// サンプルのテーブルを作成する
DataTable dataTable = new DataTable("DropDownListItems");
dataTable.Columns.Add(new DataColumn("Text", typeof(System.String)));
dataTable.Columns.Add(new DataColumn("Index", typeof(System.Int32)));
dataTable.LoadDataRow(new object[] { "AAA", 0 }, true);
dataTable.LoadDataRow(new object[] { "BBB", 1 }, true);
dataTable.LoadDataRow(new object[] { "CCC", 2 }, true);
// GcMultiRow のテンプレートを作成する
Template template = new Template();
ColumnHeaderSection columnHeaderSection1 = new ColumnHeaderSection();
ColumnHeaderCell columnHeaderCell1 = new ColumnHeaderCell();
ComboBoxCell comboBoxCell1 = new ComboBoxCell();
comboBoxCell1.DataSource = dataTable;
comboBoxCell1.DisplayMember = "Text";
comboBoxCell1.ValueMember = "Index";
template.Width = comboBoxCell1.Size.Width;
template.Row.Cells.Add(comboBoxCell1);
template.Row.Height = comboBoxCell1.Size.Height;
columnHeaderSection1.Cells.Add(columnHeaderCell1);
columnHeaderSection1.Height = columnHeaderCell1.Size.Height;
template.ColumnHeaders.Add(columnHeaderSection1);
gcMultiRow1.Template = template;
gcMultiRow1.RowCount = 10;
// サンプルのテーブルを作成する
DataTable dataTable = new DataTable("DropDownListItems");
dataTable.Columns.Add(new DataColumn("Text", typeof(System.String)));
dataTable.Columns.Add(new DataColumn("Index", typeof(System.Int32)));
dataTable.LoadDataRow(new object[] { "AAA", 0 }, true);
dataTable.LoadDataRow(new object[] { "BBB", 1 }, true);
dataTable.LoadDataRow(new object[] { "CCC", 2 }, true);
// GcMultiRow のテンプレートを作成する
Template template = new Template();
ColumnHeaderSection columnHeaderSection1 = new ColumnHeaderSection();
ColumnHeaderCell columnHeaderCell1 = new ColumnHeaderCell();
ComboBoxCell comboBoxCell1 = new ComboBoxCell();
comboBoxCell1.DataSource = dataTable;
comboBoxCell1.DisplayMember = "Text";
comboBoxCell1.ValueMember = "Index";
template.Width = comboBoxCell1.Size.Width;
template.Row.Cells.Add(comboBoxCell1);
template.Row.Height = comboBoxCell1.Size.Height;
columnHeaderSection1.Cells.Add(columnHeaderCell1);
columnHeaderSection1.Height = columnHeaderCell1.Size.Height;
template.ColumnHeaders.Add(columnHeaderSection1);
gcMultiRow1.Template = template;
gcMultiRow1.RowCount = 10;
この結果は、「BBB」を選択した場合に ComboBoxCell.Value の値は数値の 1 となります。
セルの値を確認するには、次のコードを実行します。アイテムが選択されていない場合は、null (Visual Basic では Nothing)が返ります。-1 が返らないことを注意してください。
[Visual Basic]
Console.WriteLine(Me.GcMultiRow1.CurrentCell.Value)
[C#]
Console.WriteLine(this.gcMultiRow1.CurrentCell.Value);
関連情報
- ComboBoxCell で選択されている値のインデックスを取得する方法
- ComboBoxCell で表示とデータに異なる値を使用できますか?
- ComboBoxCell で SelectedIndexChanged イベントを使う方法
この文書は、以前は次のFAQ IDで公開されていました : 11732