c#如何在datagridview中设置多个组合框列

本文关键字:组合 设置 datagridview | 更新日期: 2023-09-27 18:26:41

我已经能够在datagridview中创建一个现有的列组合框列,如何对多个列执行此操作?此外,如何在组合框项目中添加现有的不同记录?用户可以从组合框项目中选择值,也可以编写自己的值。到目前为止,我的代码是:

            dgvLoadTable.DataSource = null;
            var context = new CadAdminEntities();
            var TableName = cboSelectTable.Text.ToString();
            var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
            var truncatedData = ((IQueryable<object>)rawData).Take(0);
            var source = new BindingSource { DataSource = truncatedData };
            dgvLoadTable.DataSource = source;
            dgvLoadTable.ReadOnly = false;
            dgvLoadTable.AllowUserToAddRows = true;
            DataGridViewComboBoxCell dgvCol = new DataGridViewComboBoxCell();
            for (int row= 0; row < dgvLoadTable.Rows.Count; row++)
            {
             for (int col = 0; col < dgvLoadTable.Columns.Count; col++)
                   {
                       if(col==2||col==4)
                       this.dgvLoadTable[col,row] = dgvCol;
                 //This part throws error, as there is only one combobox
                   }
            }
            dgvLoadTable.Refresh();

c#如何在datagridview中设置多个组合框列

这很容易修复:

this.dgvLoadTable[col, row] = new DataGridViewComboBoxCell();

将为每个案例创建一个新的ComboBoxCell。

您可以删除行

DataGridViewComboBoxCell dgvCol = new DataGridViewComboBoxCell();

请注意,由于您有一个Databound DGV,并且Columns可能是自动创建的,因此您应该记住,在设置DataSource之前,通常需要关闭自动功能并手动创建所有列。。