私はこれは私が私の列を作成するために使用し、すべての行に対してDataSource
を更新コードであるComboBox
として列を持つDataGridView
を持っています。DataGridViewComboBoxCellデータソースの空
var dTable = new DataTable();
dTable.Columns.Add("Id",typeof(int));
dTable.Columns.Add("Desc", typeof(string));
for (int i = 0; i < 10; i++)
{
var dRow = dTable.NewRow();
dRow[0] = i;
dRow[1] = "test";
dTable.Rows.Add(dRow);
}
dataGridView1.DataSource = dTable;
//Create the ComboBoxColumn at the end of the grid
var cmb = new DataGridViewComboBoxColumn();
cmb.Name = "ComboCol";
cmb.HeaderText = "ComboCol";
dataGridView1.Columns.Add(cmb);
UpdateDataSourceCombo();
private void UpdateDataSourceCombo()
{
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
var comboCell = (DataGridViewComboBoxCell)dataGridView1.Rows[i].Cells["ComboCol"];
//Same datasource for every row just for testing
comboCell.DataSource = new string[] { "a", "b", "c" };
}
}
カラムは正しくComboBox
として作成されますが、常に空です。
UPDATE さらにテストした結果、DGV全体のデータソースを使用する場合にのみ問題が発生することがわかりました。
私はちょうど列を自分で作成する場合は正常に動作します:
var test = new DataGridViewTextBoxColumn();
test.Name = "asd";
dataGridView1.Columns.Add(test);
dataGridView1.Rows.Add(new DataGridViewRow());
var cmb = new DataGridViewComboBoxColumn();
cmb.Name = "ComboCol";
cmb.HeaderText = "ComboCol";
dataGridView1.Columns.Add(cmb);
UpdateDataSourceCombo(); //Same function as the original post
私は、グリッドにデータテーブルのロードのサンプルと元のコードを更新しました。
ここでうまくいきます。ドロップダウンが満たされている間は、cell.Valueが項目リストにない限り、値は表示されません。また、アイテムのデータソースを設定する前に、DGVデータソースを設定する必要があります。 Btw、なぜ 'i
TaW
更新の内容を確認できません。 DGV.DataSourceの各設定後に、ITEMsを設定する必要があります。これは特に、それぞれが行依存のデータリストを必要とするためです。 – TaW