将DataGridView列类型设置为在运行时下拉(C#.net)

将DataGridView列类型设置为在运行时下拉(C#.net),c#,.net,datagridview,combobox,drop-down-menu,C#,.net,Datagridview,Combobox,Drop Down Menu,我有一个datagridview,它的数据源被设置为数据视图->数据表,行和列在运行时自动生成 dtable.Columns.Add("1", typeof(int)); dtable.Columns.Add("2", typeof(string)); dtable.Columns.Add("3", typeof(string)); datagridview1.DataSource = dtable; DataGridViewComboBoxCell cb

我有一个datagridview,它的数据源被设置为数据视图->数据表,行和列在运行时自动生成

    dtable.Columns.Add("1", typeof(int));
    dtable.Columns.Add("2", typeof(string));
    dtable.Columns.Add("3", typeof(string));
    datagridview1.DataSource = dtable;
   DataGridViewComboBoxCell cbo1 = new DataGridViewComboBoxCell();
   DataGridViewRow dataGridRow = new DataGridViewRow();
   dataGridRow.Cells.Add(cbo1);
   dataGridView1.Rows.Add(dataGridRow);
我希望第3列是一个下拉类型,其中有3个选项。我在运行时如何做到这一点,因为我只在运行时填充网格

    dtable.Columns.Add("1", typeof(int));
    dtable.Columns.Add("2", typeof(string));
    dtable.Columns.Add("3", typeof(string));
    datagridview1.DataSource = dtable;
   DataGridViewComboBoxCell cbo1 = new DataGridViewComboBoxCell();
   DataGridViewRow dataGridRow = new DataGridViewRow();
   dataGridRow.Cells.Add(cbo1);
   dataGridView1.Rows.Add(dataGridRow);
创建datagridview组合框并将其添加到datagridview1中


您可以创建一个datagridview组合框并将其添加到datagridview 1中。您可以通过编程方式向datagridview添加列

在您的情况下,需要做的是隐藏绑定到
DataTable
时生成的第3列,然后将
DataGridViewComboBoxColumn
添加到以第三列的名称作为其
DataPropertyName
属性的网格中

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataPropertyName = "3";
dataGridView1.Columns.Add(col);
然后将一个数据源分配给该列,其中该数据源包含要显示在网格中的三个选项


DataGridViewComboBoxColumn
还具有
ValueMember
DisplayMember
属性,允许您控制在网格数据源(
ValueMember
)中设置的内容以及显示的内容。

您可以通过编程方式将列添加到
DataGridView

在您的情况下,需要做的是隐藏绑定到
DataTable
时生成的第3列,然后将
DataGridViewComboBoxColumn
添加到以第三列的名称作为其
DataPropertyName
属性的网格中

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataPropertyName = "3";
dataGridView1.Columns.Add(col);
然后将一个数据源分配给该列,其中该数据源包含要显示在网格中的三个选项


DataGridViewComboBoxColumn
还具有
ValueMember
DisplayMember
属性,允许您控制在网格数据源(
ValueMember
)中设置的内容以及显示的内容。

将该列添加到dgv后,我将其数据源设置为datatable,但是,即使数据属性名称相同,显示dgv时也不会设置下拉值。@jaminator因此列有一个数据源,它不同于datagridview数据源,并且您是否正确设置了DataPropertyName和ValueMember属性?检查完后,如果仍然不起作用,请在问题中添加代码,说明您正在做什么。当我添加正确的DataPropertyName时,它起作用了,同时还设置了列名称。col.DataPropertyName=“3”;col.HeaderText=“3”;col.Name=“3”;将列添加到dgv后,我将其数据源设置为datatable,但在显示dgv时,即使数据属性名称相同,也不会设置下拉值。@jaminator因此该列有一个不同于datagridview数据源的数据源,您是否已正确设置DataPropertyName和ValueMember属性?检查完后,如果仍然不起作用,请在问题中添加代码,说明您正在做什么。当我添加正确的DataPropertyName时,它起作用了,同时还设置了列名称。col.DataPropertyName=“3”;col.HeaderText=“3”;col.Name=“3”;