2013-11-07 7 views
1

Этот вопрос задал мне друг, и я тоже не могу его решить. Пример кода с использованием компонентов EF6 и devexpress winform.Binding Devexpress контролирует вложенное свойство

Я создаю LookupEditControl с 2 столбцами.

 var cities = context.Cities.Include(p=>p.Country) 
      .OrderBy(e => e.City.Name) 
      .OrderBy(e=>e.CountryISOCode) 
      .ToList(); 

     //countryLookUpEdit.Properties.DataSource = cities; 

     countryLookUpEdit.Properties.DisplayMember = "Name"; 
     countryLookUpEdit.Properties.ValueMember = "ID";   

     countryLookUpEdit.Properties.Columns.Clear(); 

     // this column always empty, but Console.WriteLine dumps it 
     countryLookUpEdit.Properties.Columns.Add(new LookUpColumnInfo("Country.Name", "Country Name", 225)); 

     // this column works 
     countryLookUpEdit.Properties.Columns.Add(new LookUpColumnInfo("Name", "City Name", 150)); 

     countryLookUpEdit.Properties.DataSource = cities; 

Посмотрите на последние 3 строки кода. Столбец, ограниченный «Country.Name», всегда пуст. Но другой работает.

Как связать колонку LookupEditControls с вложенным свойством бизнес-объекта?

+0

Исправлено. Спасибо. Но на самом деле это ошибка копирования-вставки. Infact реальные классы разные, и мой язык, и я заменил их, чтобы легко понять. Эта колонка хорошо работает. Проблемный столбец, если первый, который привязан к «Country.Name». – Ayhan

+0

Проблемная колонка, если первая, привязанная к «Country.Name». – Ayhan

+0

Поделитесь определением классов страны и города ... – Mikhail

ответ

1

В соответствии с following DevExpress Support ticket в LookupEdit отсутствует поддержка вложенных свойств.
Но я верю, что вы можете использовать вместо GridLookupEdit:

gridLookUpEdit.Properties.DisplayMember = "Name"; 
gridLookUpEditView.Columns.Add(
    new GridColumn() { FieldName = "Name", Visible = true }); 
gridLookUpEditView.Columns.Add(
    new GridColumn() { FieldName = "Country.Name", Caption = "Country", Visible = true }); 
gridLookUpEdit.Properties.DataSource = new List<City> { 
    new City() { Name="New York", Country = new Country() { Name = "USA" } }, 
    new City() { Name="London", Country = new Country() { Name = "UK" } }, 
}; 
Смежные вопросы