将列表框/下拉菜单放在数据网格视图中C#

时间:2015-01-12 12:37:18

标签: c# listbox

我在数据网格视图中有一个数据表。我想在特定的列和行中放置一个列表框/下拉菜单。我试过了,但它没有用 -

var column = new DataGridViewComboBoxColumn();
            RunTimeCreatedDataGridView[1, 1].Value = RunTimeCreatedDataGridView.Columns.Add(column); 

以下是我填充表格的方法 -

public DataTable createGridForForm(int rows, int columns)
{              
    // Create the output table.
    DataTable table = new DataTable();

    for (int i = 1; i <= columns; i++)
    {
        table.Columns.Add("column " + i.ToString());
    }

    for (int i = 1; i < rows; i++)
    {
        DataRow dr = table.NewRow();
        // populate data row with values here
        ListBox test = new ListBox();
        myTabPage.Controls.Add(test);
        table.Rows.Add(dr);
    }
    return table;
}

以下是我创建datagridview的方法。

private void createGridInForm(int rows, int columns)
{
    DataGridView RunTimeCreatedDataGridView = new DataGridView();
    RunTimeCreatedDataGridView.DataSource = createGridForForm(rows, columns);

    //DataGridViewColumn ID_Column = RunTimeCreatedDataGridView.Columns[0];
    //ID_Column.Width = 200;

    int positionForTable = getLocationForTable();
    RunTimeCreatedDataGridView.BackgroundColor = Color.WhiteSmoke;

    RunTimeCreatedDataGridView.Size = new Size(995, 200);
    RunTimeCreatedDataGridView.Location = new Point(5, positionForTable);
    myTabPage.Controls.Add(RunTimeCreatedDataGridView);                   
}

1 个答案:

答案 0 :(得分:0)

你的第一个代码块是正确的...问题是你试图将一个列添加到单元格引用。如果要添加一个所有行都有下拉列的列,那么就完全按照您的操作进行操作,但只需添加列而不是指定单元格值,如下所示:

var column = new DataGridViewComboBoxColumn();
RunTimeCreatedDataGridView.Columns.Add(column);

然后,像往常一样为组合框指定数据源。

或者,如果您希望特定单元格具有不同的组合框,或者只有列中的单个单元格具有一个,您可以创建一个单独的单元格,如herehere所示。< / p>

编辑:要将组合框添加到DataGridView中的特定单元格,您可以执行以下操作:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            DataGridView dgv = new DataGridView();

            // add some columns and rows
            for (int i = 0; i < 10; i++)
            {
                DataGridViewCell c = new DataGridViewHeaderCell();
                dgv.Columns.Add("Column" + i, Convert.ToString(i));
            }

            for (int i = 0; i < 10; i++)
            {
                dgv.Rows.Add(new DataGridViewRow());
            }

            //create a new DataGridViewComboBoxCell and give it a datasource
            var DGVComboBox = new DataGridViewComboBoxCell();

            DGVComboBox.DataSource = new List<string> {"one", "two", "three"};
            DGVComboBox.Value = "one"; // set default value of the combobox

            // add it to cell[4,4] of the DataGridView
            dgv[4, 4] = DGVComboBox;

            // add the DataGridView to the form
            this.Controls.Add(dgv);
        }
    }