我相信我已经阅读了互联网上关于这个问题的所有文件,而且我仍然遇到麻烦。 我有一个由两个List填充的DataGridView,并组合成一个var
topList = ShippingOrder.GetTopGroups();
topItemsList = ShippingOrder.GetCurrentTopSheet();
topList.AddRange(topItemsList);
var newList = topList.OrderBy(x => x.GroupOrder).ToList();
DdataGridView中的一个列是ComboBox。它来自一个单独的列表
alertList = GetComboBoxValue();
它的值与datagridview combox相关联。
emailRecipientDataGridViewComboBoxColumn.DataSource = alertList;
emailRecipientDataGridViewComboBoxColumn.DataPropertyName = "EmailAlert";
emailRecipientDataGridViewComboBoxColumn.DisplayMember = "PopUpText";
emailRecipientDataGridViewComboBoxColumn.ValueMember = "PopUpValue";
DataPropertyName对应于topList.EmailAlert。
DisplayMember对应于alertList.PopUpText。
ValueMember对应于alertList.PopUpValue。
然后填充数据网格
dgvTopSheet.DataSource = newList;
CurrencyManager cm = (CurrencyManager)(dgvTopSheet.BindingContext[newList]);
cm.Refresh();
填充数据网格后,除了没有显示组合框值外,一切看起来都很好。我可以使用下拉箭头显示从alertList获取的值,但是comboxbox值不会在加载时绑定topList中的值。
据我所知,我在datagridviewcombobox上阅读的50多个文档中,DataPropertName是将控件绑定到dgv中的数据所需的字段。这似乎不起作用,4小时后我有点沮丧。简单的事情似乎很大程度上暗示着我。
感谢任何帮助。
eta -
BusinessObjects类
public class BusinessObjects : INotifyPropertyChanged
{
public BusinessObjects()
{
}
private string popUpText;
public string PopUpText
{
get { return popUpText; }
set
{
popUpText = value;
OnPropertyChanged(new PropertyChangedEventArgs("PopUpText"));
}
}
private string popUpValue;
public string PopUpValue
{
get { return popUpValue; }
set
{
popUpValue = value;
OnPropertyChanged(new PropertyChangedEventArgs("PopUpValue"));
}
}
}
ShippingOrder Class
public class ShippingOrder : INotifyPropertyChanged
{
private string emailAlert;
public string EmailAlert
{
get { return emailAlert; }
set
{
emailAlert = value;
OnPropertyChanged(new PropertyChangedEventArgs("EmailAlert"));
}
}
private string partNumber;
public string PartNumber
{
get { return partNumber; }
set
{
partNumber = value;
OnPropertyChanged(new PropertyChangedEventArgs("PartNumber"));
}
}
}
示例数据如下:
ShippingOrder.PartNumber =" 1234Dp01"。
ShippingOrder.EmailAlert =" BSmith@example.com"。
BusinessObject.PopUpText =" Bob Smith"。
BusinessObject.PopUpValue =" BSmith@example.com"。