2016-12-29 4 views
0

У меня есть модель, написанная с использованием Entity Framework Code Сначала называется Проект.Lookup Изменить привязку

В моем UI, есть страница называется ProjectEdit, как показано на рисунке ниже. Как видно на изображении ниже, Customer и BOMs: Lookup Edit.

enter image description here

Я пытаюсь загрузить Customer и BOMs к Lookup Edit, но это не работает. Ниже мой код.

//New 
if (entity == null) 
    { 
     Entity = new Project(); 
    } 

//Edit 
else 
    { 
     ProjectCodeTextEdit.DataBindings.Add("EditValue", entity, "ProjectCode"); 
     DescriptionTextEdit.DataBindings.Add("EditValue", entity, "Description"); 
     CustomerLookUpEdit.DataBindings.Add("EditValue", entity, "CustomerId"); 
     BOMsLookUpEdit.DataBindings.Add("EditValue", entity, "BOMs"); 
    } 

Ниже приведены мои свойства LookUpEdit.

enter image description here

ответ

0

Вообще LookUpEdit данные объекта привязки не выполняется так же, как объект TextEdit годов. В то время как в случае с TextEdits вам просто нужно назначить значение переменной для свойства EditValue (я полагаю, что привязка TextEdits работает нормально, не так ли?), С помощью LookUp Edit вы должны назначать переменные ValueMember и свойства объекта DisplayMember. Вот почему мы обычно показываем строки данных с объектами LookUpEdit, где ValueMember - это поле идентификации строки, а DisplayMember - это поле строки, значение которой вы хотите отобразить.

В вашем случае вы должны быть более ясны относительно того, что вы хотите отобразить в своих поисках. Каждый экземпляр проекта имеет одно свойство Customer и множество спецификаций, не так ли? Итак, CustomerLookUpEdit покажет одну запись и BOMsLookUpEdit список значений в соответствии с объектом Project, который был выбран для редактирования, правильно? Я полагаю, что и ваши клиенты, и классы BOM имеют свое собственное свойство идентификатора и свойство описания. В этом случае вы должны привязать эти значения к LookUpEdits. например. в вашем коде инициализации функции добавить эти строки

CustomerLookUpEdit.Properties.DataSource = entity.Customer; 
CustomerLookUpEdit.Properties.ValueMember = "someCustomerIDpropertyName" ; 
CustomerLookUpEdit.Properties.DisplayMember = "someCustomerDescriptionpropertyName"; 

BOMsLookUpEdit.Properties.DataSource = entity.BOMs; 
BOMsLookUpEdit.Properties.ValueMember = "someBOMIDpropertyName" ; 
BOMsLookUpEdit.Properties.DisplayMember = "someBOMDescriptionpropertyName" ; 

Вы можете прочитать в этой теме https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsLookUpEdittopic

+0

Я пробовал решение, упомянутое выше. Кроме того, я попытался использовать свойства редактирования LookUp, которые я добавил в своем вопросе. К сожалению, это не сработало. – active92

+0

Я решил проблему. Я думаю, что это связано с платформой Entity Framework. В 'CustomerLookUpEdit.Properties.DataSource = entity.Customer;' строка, 'entity.Customer' должна быть заменена на' entity.Customer.ToList() ' – active92

+0

На самом деле вы правы, я думаю, что объект DataSource должен реализовать IList или IListSource интерфейс, даже если у вас есть только один клиент, его необходимо добавить в список – jambonick

 Смежные вопросы

  • Нет связанных вопросов^_^