У меня есть рутина, которая открывает набор записей и создает коллекцию Items для поля со списком. После googling я нашел подход, который использует класс ComboboxItem.C# ComboBox databinding
public class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Display;
}
}
Мой код использует этот класс для добавления элементов в ComboBox. Когда я запускаю приложение и щелкаю Combobox, правильные значения находятся в списке ... отлично! Моя проблема заключается в том, что когда форма загружает запись из базы данных, вместо этого она ищет соответствующее значение списка, которое соответствует значению базы данных, оно просто показывает значение из базы данных: например, Великобритания, а не Великобритания. Когда я пытаюсь сохранить запись, она пытается спасти «Соединенное Королевство» вместо «Великобритании». Поэтому я считаю, что свойства DisplayMember и ValueMember нужно назначать. Я предположил, что мне нужно будет назначить их как «Текст» и «Значение», но когда я это сделаю, Combobox отображает список одинаковых значений. Что я делаю неправильно?
Edit: Это упрощенная версия того, что я поставил в моем ComboBox Класс:
public class StandardComboBox : ComboBox
{
protected List<ComboboxItem> DataSourceList = new List<ComboboxItem>();
public bool SetRecordSource(string Criteria)
{
ADODB.Recordset RS = new ADODB.Recordset();
try
{
DataSourceList.Clear();
// Open ADDOB.Recordset RS with the records specified in Criteria
while (RS.EOF == false)
{
ComboboxItem MyComboboxItem = new ComboboxItem();
MyComboboxItem.Value = RS.Fields[0].Value.ToString();
MyComboboxItem.Display = RS.Fields[1].Value.ToString();
DataSourceList.Add(MyComboboxItem);
RS.MoveNext();
}
this.DataSource = DataSourceList;
this.ValueMember = "Value";
this.DisplayMember = "Display";
return true;
}
}
}
Это приложение WPF? – Han