DataGridView ComboBox永远不会填充

| 我在CGridBox的DataGridView中有一列,但无法填充它。我已经一遍又一遍地看了我的代码,这似乎是正确的,但是不能因为ComboBox从未填充过。 这是我的代码。 首先,用于测试的静态数据源:
List<Phone> PhoneList = new List<Phone>();

Phone p1 = new Phone();
p1.PhoneID = 1;
p1.PhoneTypeID = 2;
p1.AreaCode = \"333\";
p1.Number = \"123-1234\";
p1.PhoneTypeName = \"Primary\";
PhoneList.Add( p1 );

Phone p2 = new Phone();
p2.PhoneID = 2;
p2.PhoneTypeID = 2;
p2.AreaCode = \"444\";
p2.Number = \"432-8900\";
p2.PhoneTypeName = \"Secondary\";
PhoneList.Add( p2 );
这只是为了显示ComboBox列的DataPropertyName:
this.dgvClinic.Columns[ \"PhoneName\" ].DataPropertyName = \"PhoneID\";
接下来,我要提取数据,然后为它的每一行向DataGridView添加一行,并为新添加的行填充单元格。最后是我的ComboBox列,如您所见,我正在填充我的DataSource,DisplayMember和ValueMember属性。请注意最后三行注释掉的行,我什至尝试将静态值添加到单元格的Item集合中。两种方法均无效。所发生的一切只是前三列具有数据,但是ComboBox单元永远没有任何数据。
Clinic c = new Clinic();
string CurrentLocation = string.Empty;
foreach ( Clinic i in c.SelfListAll() )
{
    Location_List_ByClinicResult l = i.Locations.FirstOrDefault<Location_List_ByClinicResult>();
    if ( l == null )
    {
        CurrentLocation = \"12345 Main Street\" + \" \" + \"San Rafael\" + \", \" + \"CA\" + \" \" + \"94903\";
    }
    else
    {
        CurrentLocation = l.Address1 + \" \" + l.City + \", \" + l.StateAbbrev + \" \" + l.Zip;
    }

    RowIndex = this.dgvClinic.Rows.Add();

    this.dgvClinic.Rows[ RowIndex ].Cells[ \"ClinicID\" ].Value = i.ClinicID.ToString();
    this.dgvClinic.Rows[ RowIndex ].Cells[ \"ClinicName\" ].Value = i.Name;
    this.dgvClinic.Rows[ RowIndex ].Cells[ \"LocationName\" ].Value = CurrentLocation;

    DataGridViewComboBoxCell cell = this.dgvClinic.Rows[ RowIndex ].Cells[ \"PhoneName\" ] as DataGridViewComboBoxCell;
    cell.DataSource = PhoneList;
    cell.DisplayMember = \"Number\";
    cell.ValueMember = \"PhoneID\";
    //cell.Items.Add( \"One\" );
    //cell.Items.Add( \"Two\" );
    //cell.Items.Add( \"Three\" );
}
我真的希望有人能看到我在这里想念的东西。顺便说一下,我已经在设计器中创建了列。 谢谢。     
已邀请:
cell.DataSource = PhoneList;
cell.DisplayMember = \"Number\";
cell.ValueMember = \"PhoneID\";
看这部分,我可以观察到的是您将“电话列表”设置为单元的数据源。现在,
DisplayMember
ValueMember
属性将在
PhoneList
中查找列
\"Number\"
\"PhoneID\"
。但是实际上
PhoneList
没有称为
\"Number\"
\"PhoneID\"
的任何列,而是PhoneList的子级p1和p2具有这些列。因此它将无法在数据源电话列表中找到列(
\"Number\"
\"PhoneID\"
)。 尝试将其填充到数据表中,然后将其分配给单元格。
DataTable dt = new DataTable();
//Add Row p1
//Add Row p2
现在分配他们。
  cell.DataSource = dt;
  cell.DisplayMember = \"Number\";
  cell.ValueMember = \"PhoneID\";
另请参阅此链接     
您是否尝试过像这样使用DataGridViewComboBoxColumn: DataGridViewComboBoxColumn column =新的DataGridViewComboBoxColumn(); column.DataSource = PhoneList; column.DataPropertyName = \“ PhoneID \”; column.MaxDropDownItems = 4; column.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox; yourdatagridview.Columns.Add(column); 也许以这种方式工作,即组合框应该为datagridview中的所有行包含相同的列表。至少当您对所有行使用一个PhoneList时,它会起作用。     

要回复问题请先登录注册