2016-12-29 32 views
0

我有一个使用实体框架代码编写的模型首先调用项目查找编辑绑定

在我的UI中,有一个页面叫做ProjectEdit,如下图所示。如下图所示,CustomerBOMsLookup Edit

enter image description here

我试图加载CustomerBOMsLookup 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对象的数据绑定未实现的方式作为一个文本编辑对象的相同。在TextEdits的情况下,您只需将变量值赋给EditValue属性(我认为TextEdits绑定工作正常,是不是?),使用LookUp Edit应该为变量指定ValueMember和DisplayMember属性。这就是为什么我们通常使用LookUpEdit对象显示数据行,其中ValueMember是行的标识字段,DisplayMember是您希望显示其值的行的字段。

在你的情况下,你应该更清楚你想在你的lookupedits中显示什么。每个Project实例都有一个Customer属性和许多BOM,对吧?因此,CustomerLookUpEdit将显示一条记录和BOMsLookUpEdit根据选择要编辑的项目对象的值列表,是否正确?我想你的Customer和BOM类都有自己的ID属性和描述属性。在这种情况下,您应该将这些值绑定到LookUpEdits。例如。在你的初始化函数代码这个话题https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsLookUpEdittopic

+0

我已经试过上述解决方案中添加这些行

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" ; 

你可以阅读更多。另外,我尝试使用我在问题中添加的查找编辑属性。不幸的是,它没有奏效。 – active92

+0

我解决了这个问题。我认为这是由于实体框架。在CustomerLookUpEdit.Properties.DataSource = entity.Customer;'line,'entity.Customer'必须被替换为'entity.Customer.ToList()' – active92

+0

其实你是对的,我认为DataSource对象必须实现IList或IListSource界面,即使您只有一个客户,也必须将其添加为列表 – jambonick