Значение не отображается в элементе управления DataGridViewComboBox - PullRequest
1 голос
/ 17 января 2012

После установки значений в DataGridView они не отображаются в элементе управления, хотя я могу получить к ним доступ через свойство Value.

Проблема в том, что по умолчанию нет Value в ячейках ComboBox.

void ComboBoxColumn()
{
    string[] values =  { "one", "two", "three" };
    string columnName = "Test";
    var column = new DataGridViewComboBoxColumn();
    column.Name = columnName;
    column.ValueType = typeof(string);

    foreach(string item in values)
    {
        column.Items.Add(item);
    }

    Grid.Columns.Add(column);

    // problematic part
    foreach(DataGridViewRow row in Grid.Rows)
    {
        row.Cells[columnName].Value = values[0];
    }
}

Ответы [ 4 ]

1 голос
/ 17 января 2012
    void AddComboColumn()
    {
        string[] values = { "one", "two", "three" };
        string columnName = "Test";
        var column = new DataGridViewComboBoxColumn();
        column.Name = columnName;
        column.ValueType = typeof(string);

        foreach (string item in values)
        {
            column.Items.Add(item);
        }

        dataGridView1.Columns.Add(column);

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            row.Cells[columnName].Value = values[2];
        }
    }

Этот код тоже работает ... Проверьте, может быть проблема в 'RandomValue (values);'?У меня нет этой части кода, и я не могу сказать наверняка.PS В моей проге значение по умолчанию == "три".

1 голос
/ 17 января 2012
    void SetValues()
    {
        string[] values = { "one", "two", "three" };
        string columnName = "Test";
        var column = new DataGridViewComboBoxColumn();
        column.Name = columnName;
        column.ValueType = typeof(string);

        foreach (string item in values)
        {
            column.Items.Add(item);
        }

        dataGridView1.Columns.Add(column);
    }

На моей машине этот код работает. Если я щелкну ComboBoxColumn, я смогу увидеть значения дерева и выбрать одно. В чем ваша проблема?

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            row.Cells[columnName].Value = values[1];
        }

Если вы добавите этот код, значение поля со списком по умолчанию показывает значение 'two'.

0 голосов
/ 18 марта 2015

Сначала укажите имя для поля со списком в datagridveiw ColDryg затем в функции initvalue напишите этот код

  DataGridViewComboBoxColumn ColDryg =
 (DataGridViewComboBoxColumn)Gv_dtails.Columns["ColDryg"];
             ColDryg.DataSource = db.Drugs.ToList();
             ColDryg.ValueMember = "Id";
             ColDryg.DisplayMember ="Arabic_name";

у вас есть таблица в базе данных с именем Drug

0 голосов
/ 17 января 2012

Я не могу воспроизвести вашу ошибку.Вот мой пример проекта

Попробуйте и дайте нам что-нибудь еще, что может быть проблемой.

note : я скопировал ваш код напрямую (изатем добавлено в несколько рядов)

...