这是让我疯了。 我觉得我已经阅读了网上的每一篇文章,但仍然没有任何内容。 所有我试图绑定到列表
gvCompany.DataSource = BLL.Inventory.Company.GetAllActive(forceReload);
DataGridViewComboBoxColumn stateColumn = GridViewComboBoxColumn();
DataGridViewComboBoxCell cellCombo = new DataGridViewComboBoxCell();
stateColumn.DataPropertyName = "StateName";
stateColumn.CellTemplate = cellCombo;
gvCompany.Columns.Add(stateColumn);
private static DataGridViewComboBoxColumn GridViewComboBoxColumn()
{
DataGridViewComboBoxColumn sColumn = new DataGridViewComboBoxColumn();
sColumn.DataSource = BLL.Inventory.State.GetAllActive();
sColumn.DisplayMember = "Name";
sColumn.ValueMember = "OID";
return sColumn;
}
有人可以告诉我我做错了什么吗? 它绑定但我没有得到任何下拉,
答案 0 :(得分:1)
确保在DataGridView
上启用编辑功能。这应该允许Combobox列下拉。
答案 1 :(得分:1)
你的代码有点困惑,这应该有效:
void initGridView()
{
DataGridView gvCompany = new DataGridView();
DataGridViewComboBoxColumn sColumn = new DataGridViewComboBoxColumn();
//Load Data to ComboBoxColumn
sColumn.DataSource = BLL.Inventory.State.GetAllActive();
sColumn.DisplayMember = "Name";
sColumn.ValueMember = "OID";
gvCompany.Columns.Add(sColumn);
//Load Data
gvCompany.DataSource = BLL.Inventory.Company.GetAllActive(forceReload);
}
您应首先尝试使用简单的数据源以确保此处没有问题,您可以使用List<String>
您不需要使用DataGridViewComboBoxCell
,除非您想在不同的行中指定不同的数据源到组合框。
答案 2 :(得分:0)
尝试绑定到BindingList<T>
。通过将DataSource
设置为BindingList<T>
而不是List<T>
,有时可以解决您看到的奇怪行为。例如,假设您的类型名为Company
:
gvCompany.DataSource = new BindingList<Company>(BLL.Inventory.Company.GetAllActive(forceReload));