值不会显示在DataGridViewComboBox控件上

时间:2012-01-17 13:57:44

标签: c# winforms datagridview datagridviewcombobox

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 个答案:

答案 0 :(得分:1)

    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”。

答案 1 :(得分:1)

    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);'中的问题? 我没有这部分代码,也无法确定。 附:在我的编程默认值==“三”。

答案 2 :(得分:0)

我无法重现您的错误。这是我的 sample project

尝试并向我们提供可能存在问题的任何其他内容。

注意:我直接复制了您的代码(然后添加到某些行中)

答案 3 :(得分:0)

首先在datagridveiw ColDryg中为组合框命名 然后在initvalue函数中编写此代码

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

你在数据库中有一个表,它的名字是药物