Поскольку код не показывает, как построены столбцы, трудно сказать, в чем проблема, но код не использует DataGridViewComboBoxColum
. DataGridViewComboBoxColumn
- это все, что вам нужно сделать, чтобы каждая строка в столбце 0 была поле со списком «Мужской», «Женский».
Недопустимая петля неправильной формы foreach
и не компилируется. Я предполагаю, что цикл for
- это то, что вы искали. После этого цикла for
... новая строка правильно добавлена в сетку. Затем создается новый DataGridViewComboBoxCell
и добавляется ячейка [0] текущей строки. dataGridView1.Rows[counter].Cells[0] = cbCell;
. Эта ячейка [0] добавляется к каждой новой строке.
Это не нужно, если DataGridViewViewComboBoxColumn
настроен правильно. Добавление DataGridViewComboBoxCell
вполне допустимо и в основном позволяет помещать поле со списком в любую ячейку «SINGLE». Тем не менее, он работает, если использовать этот способ, вызывает сомнение в использовании поля со списком.
Цикл «добавляет» данные к dataGridView1
. Когда вы читаете данные, часть «Пол» (мужчина, женщина), кажется, отсутствует, поэтому значение не устанавливается, как другие значения. Пример: Существует не линия, как показано ниже:
dataGridView1.Rows[counter].Cells[0].Value = gender[counter];
Если был «Пол» массив, который занимал эту информацию, а затем, когда код устанавливает это значение (мужчины, женщины) в строке кода выше комбо box box автоматически установит для этого значения поле со списком. Данные будут только «один» (1) из двух значений.
Так предполагая, это то, что вы ищете ниже код показывает, как использовать DataGridViewComboBoxColumn
слово предостережения при чтении данных в поле со списком ячейки; если строковые данные для столбца со списком не соответствуют одному из элементов в списке элементов со списками, код будет сбой, если он не будет обнаружен и не будет адресован. Если значение представляет собой пустую строку, то в поле со списком будет установлено пустое значение.
// Sample data
string[] firstname = { "John", "Bob", "Cindy", "Mary", "Clyde" };
string[] lastname = { "Melon", "Carter", "Lawrence", "Garp", "Johnson" };
string[] gender = { "Male", "", "Female", "", "Male" };
// Create the combo box column for the datagridview
DataGridViewComboBoxColumn comboCol = new DataGridViewComboBoxColumn();
comboCol.Name = "Gender";
comboCol.HeaderText = "Gender";
comboCol.Items.Add("Male");
comboCol.Items.Add("Female");
// add the combo box column and other columns to the datagridview
dataGridView1.Columns.Add(comboCol);
dataGridView1.Columns.Add("FirstName", "First Name");
dataGridView1.Columns.Add("LastName", "Last Name");
// read in the sample data
for (int counter = 0; counter < 5; counter++)
{
dataGridView1.Rows.Add(gender[counter], firstname[counter], lastname[counter]);
}
Надеюсь, это поможет.
Большое спасибо JohnG –