DataGridViewComboBoxColumn Selected Value / Index - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь заполнить DataGridViewComboBoxColumn списком строк, а затем выбрать одну из них, основываясь на их значении при загрузке формы.

Простая задача, которая может показаться, но я просто не могу понять ее правильно.

Я заполняю DataGridViewComboBoxColumn со строками как таковыми без проблем:

ComboBoxColumn.Items.AddRange("Mr.", "Ms.", "Mrs.", "Dr.");

Кажется, я также могу добавить его в DataGridView без проблем (Это неправильно, см. Редактировать):

ExampleDataGrid.Rows.Add("", ComboBoxColumn, 1000, "");

Теперь я хочу установить «Мистер»быть выбранным под нагрузкой.Другие сообщения предполагают, что я должен иметь возможность просто использовать:

ExampleDataGrid.Rows[i].Cells["ExampleColumnName"].Value = "Mr.";

Но всякий раз, когда я его использую, я получаю ошибку, которая говорит мне, что значение недопустимо.Я что-то упускаю?

Однако я могу использовать это, чтобы получить заданное значение без проблем:

string Title = ExampleDataGrid.Rows[i].Cells["ExampleColumnName"].Value;

Я посмотрел документацию, но, похоже, не упоминается, как на самом деле использовать. Значение вэтот контекст. Документы Microsoft

Любые мысли о том, где я иду не так, были бы хорошими.

Редактировать:

Проблема, с которой я столкнулсяЯ был вызван установкой ComboBoxItems в "ExampleDataGrid.Rows.Add ()".На самом деле это должно содержать значение, которое вы хотите установить.например,

ExampleDataGrid.Rows.Add("", "Mr.", 1000, "");

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете инициализировать DataGridView следующим образом:

private void Form1_Load(object sender, EventArgs e)
{
    var textBoxColumn = new DataGridViewTextBoxColumn();
    textBoxColumn.Name = "textBoxColumn";

    var comboBoxColumn = new DataGridViewComboBoxColumn();
    comboBoxColumn.Items.AddRange("A", "B", "C");
    comboBoxColumn.Name = "comboBoxColumn";

    dataGridView1.Columns.Add(textBoxColumn);
    dataGridView1.Columns.Add(comboBoxColumn);

    dataGridView1.Rows.Add("1", "A");
    dataGridView1.Rows.Add("2", "B");
}

, а затем обновить значение comboBoxColumn для второй строки следующим образом:

private void button1_Click(object sender, EventArgs e)
{
    //You can use either of the following ways:
    dataGridView1[1, 1].Value = "C";
    //dataGridView1["comboBoxColumn", 1].Value = "C";
    //dataGridView1.Rows[1].Cells["comboBoxColumn"].Value = "C";
    //dataGridView1.Rows[1].Cells[1].Value = "C";
}

Значениекоторый вы устанавливаете для ячейки, должен находиться между значениями, которые вы добавили к Items из DataGridViewComboBoxColumn.

...