Как динамически добавить поле со списком в виде таблицы данных только для одной ячейки

Я читаю XML-файл, используя набор данных, а затем я создаю datagridview и назначаю таблицу из datagridview.datasource таблицы динамически. Проблема, с которой я здесь сталкиваюсь, заключается в том, что я хочу добавить комбинированный список для одной ячейки в datagridview.

Ниже мой код:

datagridview1.AllowUserToAddRows = false;
datagridview1.AllowUserToDeleteRows = false;
datagridview1.RowHeadersVisible = false;
datagridview1.AutoSizeColumnsMode =   DataGridViewAutoSizeColumnsMode.AllCells;
datagridview1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
datagridview1.DataMember = "";
datagridview1.DataSource = my_dataTable;
datagridview1.Columns["first name"].ReadOnly = true;
datagridview1.Columns["Second name"].Visible = false;
datagridview1.Columns["place"].Visible = false;
datagridview1.Columns["address"].Visible = false;
string[] datasource = { "add1", "add2" };
DataGridViewComboBoxCell combo = new DataGridViewComboBoxCell();
combo.DataSource = datasource;
datagridview1.Rows[2].Cells[2] = combo; 

Это дает мне значение datagridview. Значение comboboxcell является недопустимой ошибкой. Если я даю какое-то значение, то оно работает хорошо, но не может видеть комбинированный список в datagridview.

1 ответ

Вы можете использовать DataSource кормить Items, но использование простого строкового массива не будет работать.

Вместо этого вы можете преобразовать массив в List<string>:

string[] datasource = { "add1", "add2" };
DataGridViewComboBoxCell combo = new DataGridViewComboBoxCell();
combo.DataSource = datasource.ToList();
DGV.Rows[2].Cells[2] = combo; 

Чтобы установить значение, вы можете использовать..

combo.Value = combo.Items[0];

... после установки ячейки

Для лучшего контроля, особенно для сператы Display- а также ValueMembers Вы можете переключиться на Dictionary или использовать List<someClass>..

Другие вопросы по тегам