作成日: 2018/01/25 最終更新日: 2018/01/25
文書種別
使用方法
詳細
C1ComboBoxを用いると、ベースとなるデータの代わりに、関連するデータソースに設定された分かりやすいテキストを表示することができます。
これを行うには、BindingSourceコントロールを2個使用し、C1ComboBoxのItemsDataSourceとDataSourceとにそれぞれを設定します。また、C1ComboBoxのDataFieldプロパティに、参照フィールドとするフィールド名を指定します。
※このとき、C1ComboBoxのTranslateValueプロパティを「True」に設定する必要があります。
以下のような「ID」フィールドで相互に関連する2つのデータテーブルがある場合、Salesテーブルのナビゲートに応じて、C1ComboBoxにFruitテーブルの参照フィールド(Name)の値を表示する方法をご紹介します。
(1)Salesテーブル
SeqNo ID NumSales
---------------------------------------
1 A3 100
2 A4 50
3 A1 150
4 A2 400
5 A1 200
6 A4 350
---------------------------------------
(2)Fruitテーブル
ID Name
------------------
A1 リンゴ
A2 バナナ
A3 ミカン
A4 イチゴ
------------------
◎サンプルコード(VB)
◎サンプルコード(C#)
これを行うには、BindingSourceコントロールを2個使用し、C1ComboBoxのItemsDataSourceとDataSourceとにそれぞれを設定します。また、C1ComboBoxのDataFieldプロパティに、参照フィールドとするフィールド名を指定します。
※このとき、C1ComboBoxのTranslateValueプロパティを「True」に設定する必要があります。
以下のような「ID」フィールドで相互に関連する2つのデータテーブルがある場合、Salesテーブルのナビゲートに応じて、C1ComboBoxにFruitテーブルの参照フィールド(Name)の値を表示する方法をご紹介します。
(1)Salesテーブル
SeqNo ID NumSales
---------------------------------------
1 A3 100
2 A4 50
3 A1 150
4 A2 400
5 A1 200
6 A4 350
---------------------------------------
(2)Fruitテーブル
ID Name
------------------
A1 リンゴ
A2 バナナ
A3 ミカン
A4 イチゴ
------------------
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' BindingNavigatorコントロールのBindingSourceを設定
BindingNavigator1.BindingSource = BindingSource1
' データテーブル1の設定(セールスデータ)
Dim dt1 As DataTable = New DataTable("Sales")
dt1.Columns.Add("SeqNo", System.Type.GetType("System.Int32"))
dt1.Columns.Add("ID", System.Type.GetType("System.String"))
dt1.Columns.Add("NumSales", System.Type.GetType("System.Int32"))
dt1.Rows.Add(1, "A3", 100)
dt1.Rows.Add(2, "A4", 50)
dt1.Rows.Add(3, "A1", 150)
dt1.Rows.Add(4, "A2", 400)
dt1.Rows.Add(5, "A1", 200)
dt1.Rows.Add(6, "A4", 350)
' データテーブル2の設定(果物名マスター)
Dim dt2 As DataTable = New DataTable("Fruit")
dt2.Columns.Add("ID", System.Type.GetType("System.String"))
dt2.Columns.Add("Name", System.Type.GetType("System.String"))
dt2.Rows.Add("A1", "リンゴ")
dt2.Rows.Add("A2", "バナナ")
dt2.Rows.Add("A3", "ミカン")
dt2.Rows.Add("A4", "イチゴ")
' 2つのBindingSourceをそれぞれのデータテーブルにバインド
BindingSource1.DataSource = dt1
BindingSource2.DataSource = dt2
' TextBoxにセールスデータを表示
TextBox1.DataBindings.Add("text", BindingSource1, "SeqNo")
TextBox2.DataBindings.Add("text", BindingSource1, "ID")
TextBox3.DataBindings.Add("text", BindingSource1, "NumSales")
' C1ComboBoxのデータバインド
C1ComboBox1.ItemsDataSource = BindingSource2
C1ComboBox1.ItemsValueMember = "ID"
C1ComboBox1.ItemsDisplayMember = "Name"
C1ComboBox1.TextDetached = True
C1ComboBox1.TranslateValue = True
C1ComboBox1.DataSource = BindingSource1
C1ComboBox1.DataField = "ID"
End Sub
' BindingNavigatorコントロールのBindingSourceを設定
BindingNavigator1.BindingSource = BindingSource1
' データテーブル1の設定(セールスデータ)
Dim dt1 As DataTable = New DataTable("Sales")
dt1.Columns.Add("SeqNo", System.Type.GetType("System.Int32"))
dt1.Columns.Add("ID", System.Type.GetType("System.String"))
dt1.Columns.Add("NumSales", System.Type.GetType("System.Int32"))
dt1.Rows.Add(1, "A3", 100)
dt1.Rows.Add(2, "A4", 50)
dt1.Rows.Add(3, "A1", 150)
dt1.Rows.Add(4, "A2", 400)
dt1.Rows.Add(5, "A1", 200)
dt1.Rows.Add(6, "A4", 350)
' データテーブル2の設定(果物名マスター)
Dim dt2 As DataTable = New DataTable("Fruit")
dt2.Columns.Add("ID", System.Type.GetType("System.String"))
dt2.Columns.Add("Name", System.Type.GetType("System.String"))
dt2.Rows.Add("A1", "リンゴ")
dt2.Rows.Add("A2", "バナナ")
dt2.Rows.Add("A3", "ミカン")
dt2.Rows.Add("A4", "イチゴ")
' 2つのBindingSourceをそれぞれのデータテーブルにバインド
BindingSource1.DataSource = dt1
BindingSource2.DataSource = dt2
' TextBoxにセールスデータを表示
TextBox1.DataBindings.Add("text", BindingSource1, "SeqNo")
TextBox2.DataBindings.Add("text", BindingSource1, "ID")
TextBox3.DataBindings.Add("text", BindingSource1, "NumSales")
' C1ComboBoxのデータバインド
C1ComboBox1.ItemsDataSource = BindingSource2
C1ComboBox1.ItemsValueMember = "ID"
C1ComboBox1.ItemsDisplayMember = "Name"
C1ComboBox1.TextDetached = True
C1ComboBox1.TranslateValue = True
C1ComboBox1.DataSource = BindingSource1
C1ComboBox1.DataField = "ID"
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// BindingNavigatorコントロールのBindingSourceを設定
bindingNavigator1.BindingSource = bindingSource1;
// データテーブル1の設定(セールスデータ)
DataTable dt1 = new DataTable("Sales");
dt1.Columns.Add("SeqNo", System.Type.GetType("System.Int32"));
dt1.Columns.Add("ID", System.Type.GetType("System.String"));
dt1.Columns.Add("NumSales", System.Type.GetType("System.Int32"));
dt1.Rows.Add(1, "A3", 100);
dt1.Rows.Add(2, "A4", 50);
dt1.Rows.Add(3, "A1", 150);
dt1.Rows.Add(4, "A2", 400);
dt1.Rows.Add(5, "A1", 200);
dt1.Rows.Add(6, "A4", 350);
// データテーブル2の設定(果物名マスター)
DataTable dt2 = new DataTable("Fruit");
dt2.Columns.Add("ID", System.Type.GetType("System.String"));
dt2.Columns.Add("Name", System.Type.GetType("System.String"));
dt2.Rows.Add("A1", "リンゴ");
dt2.Rows.Add("A2", "バナナ");
dt2.Rows.Add("A3", "ミカン");
dt2.Rows.Add("A4", "イチゴ");
//2つのBindingSourceをそれぞれのデータテーブルにバインド
bindingSource1.DataSource = dt1;
bindingSource2.DataSource = dt2;
// TextBoxにセールスデータを表示
textBox1.DataBindings.Add("text", bindingSource1, "SeqNo");
textBox2.DataBindings.Add("text", bindingSource1, "ID");
textBox3.DataBindings.Add("text", bindingSource1, "NumSales");
// C1ComboBoxのデータバインド
c1ComboBox1.ItemsDataSource = bindingSource2;
c1ComboBox1.ItemsValueMember = "ID";
c1ComboBox1.ItemsDisplayMember = "Name";
c1ComboBox1.TextDetached = true;
c1ComboBox1.TranslateValue = true;
c1ComboBox1.DataSource = bindingSource1;
c1ComboBox1.DataField = "ID";
}
{
// BindingNavigatorコントロールのBindingSourceを設定
bindingNavigator1.BindingSource = bindingSource1;
// データテーブル1の設定(セールスデータ)
DataTable dt1 = new DataTable("Sales");
dt1.Columns.Add("SeqNo", System.Type.GetType("System.Int32"));
dt1.Columns.Add("ID", System.Type.GetType("System.String"));
dt1.Columns.Add("NumSales", System.Type.GetType("System.Int32"));
dt1.Rows.Add(1, "A3", 100);
dt1.Rows.Add(2, "A4", 50);
dt1.Rows.Add(3, "A1", 150);
dt1.Rows.Add(4, "A2", 400);
dt1.Rows.Add(5, "A1", 200);
dt1.Rows.Add(6, "A4", 350);
// データテーブル2の設定(果物名マスター)
DataTable dt2 = new DataTable("Fruit");
dt2.Columns.Add("ID", System.Type.GetType("System.String"));
dt2.Columns.Add("Name", System.Type.GetType("System.String"));
dt2.Rows.Add("A1", "リンゴ");
dt2.Rows.Add("A2", "バナナ");
dt2.Rows.Add("A3", "ミカン");
dt2.Rows.Add("A4", "イチゴ");
//2つのBindingSourceをそれぞれのデータテーブルにバインド
bindingSource1.DataSource = dt1;
bindingSource2.DataSource = dt2;
// TextBoxにセールスデータを表示
textBox1.DataBindings.Add("text", bindingSource1, "SeqNo");
textBox2.DataBindings.Add("text", bindingSource1, "ID");
textBox3.DataBindings.Add("text", bindingSource1, "NumSales");
// C1ComboBoxのデータバインド
c1ComboBox1.ItemsDataSource = bindingSource2;
c1ComboBox1.ItemsValueMember = "ID";
c1ComboBox1.ItemsDisplayMember = "Name";
c1ComboBox1.TextDetached = true;
c1ComboBox1.TranslateValue = true;
c1ComboBox1.DataSource = bindingSource1;
c1ComboBox1.DataField = "ID";
}
関連情報
旧文書番号
82512