BindingSource
DataGridViewでオブジェクトを使用できることを知っています。
列の1つにコンボボックスを配置し、それでも?を利用することは可能BindingSource
ですか?
はい、そうです-C#のDataGridViewでComboBoxを見てください:
DataGridViewでComboBoxを使用することは、もはやそれほど複雑ではありませんが、データ駆動型のソフトウェア開発を行う際にはほぼ必須です。
このようなDataGridViewを作成しました。ここで、DataGridViewに「MonthID」と「ItemID」の代わりに「Month」と「Item」を表示したいと思います。
基本的に、この記事で説明しているのは、コンボボックスを個別のバインドソース(この場合は、MonthID
とMonthName
が格納されている検証テーブル)でバインドすることです。月の名前は、元のデータのIDに基づいて表示されます。
ここで、彼は月のデータソースを設定し、月のテーブルから選択してBindingSource
、返されたデータからを作成します。
//Month Data Source
string selectQueryStringMonth = "SELECT MonthID,MonthText FROM Table_Month";
SqlDataAdapter sqlDataAdapterMonth = new SqlDataAdapter(selectQueryStringMonth, sqlConnection);
SqlCommandBuilder sqlCommandBuilderMonth = new SqlCommandBuilder(sqlDataAdapterMonth);
DataTable dataTableMonth= new DataTable();
sqlDataAdapterMonth.Fill(dataTableMonth);
BindingSource bindingSourceMonth = new BindingSource();
bindingSourceMonth.DataSource = dataTableMonth;
DataSource
次に、上記でBindingSource
作成したように、月ComboBoxColumnをDataGridViewに追加します。
//Adding Month Combo
DataGridViewComboBoxColumn ColumnMonth = new DataGridViewComboBoxColumn();
ColumnMonth.DataPropertyName = "MonthID";
ColumnMonth.HeaderText = "Month";
ColumnMonth.Width = 120;
ColumnMonth.DataSource = bindingSourceMonth;
ColumnMonth.ValueMember = "MonthID";
ColumnMonth.DisplayMember = "MonthText";
dataGridViewComboTrial.Columns.Add(ColumnMonth);
そして最後に、彼はDataGridView
を元のデータにバインドします。