我已经能够在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();
答案 0 :(得分:0)
这很容易解决:
this.dgvLoadTable[col, row] = new DataGridViewComboBoxCell();
将为每个案例创建一个新的ComboBoxCell。
您可以删除该行
DataGridViewComboBoxCell dgvCol = new DataGridViewComboBoxCell();
请注意,由于您有一个Databound DGV并且列可能是自动创建的,因此您应该记住,通常需要关闭该自动操作并在设置DataSource之前手动创建所有列。