0

我有一个简单的表,只有一列UrzadSkarbowyWojewodztwo,我试图将Entity Framework查询附加到ComboBoxEdit或LookUpEdit(最好是两个参考)。考虑到我不想从GUI做到这一点,有人可以分享一种方法来做到这一点吗?绑定实体框架查询Devexpress LookUpEdit和组合框编辑

我尝试过多种方式,每次都会失败。我敢肯定,我失去了一些东西......基于LinqServerMode

using (var context = new EntityBazaCRM(Settings.sqlDataConnectionDetails)) 
     { 
      IQueryable<UrzedySkarboweWojewodztwa> listaWojewodztw = from d in context.UrzedySkarboweWojewodztwas 
                 select d; 

      //lookUpEdit1.DataBindings.Add("EditValue", listaWojewodztw, "", true); 
      lookUpEdit1.DataBindings.Add("EditValue", listaWojewodztw, "UrzadSkarbowyWojewodztwo", true); 
      lookUpEdit1.Properties.DataSource = listaWojewodztw.ToList(); 
      lookUpEdit1.Properties.DisplayMember = "UrzadSkarbowyWojewodztwo"; 
      lookUpEdit1.Properties.ValueMember = "UrzadSkarbowyWojewodztwo"; 

      LookUpColumnInfo col = new LookUpColumnInfo("UrzadSkarbowyWojewodztwo", "Województwo", 100) { SortOrder = DevExpress.Data.ColumnSortOrder.Ascending }; 
      lookUpEdit1.Properties.Columns.Add(col); 

回答

0

为了能够绑定实体框架列表与DevExpress的ComboBoxEdit一个需要创建额外partial班级与object同名,我们正在尝试将其放入ComboBoxEdit。在该类中,我们需要覆盖ToString(),以获取我们想要在用户的ComboBoxEdit中显示的值。

public partial class SzkolenieMiejsca : EntityObject { 
    public override string ToString() { 
     return _MiejsceSzkolenia; 
    } 
} 

然后我们简单地将对象分配到ComboBoxItemCollection和DevExpress的将做休息。

using (var context = new EntityBazaCRM(Settings.sqlDataConnectionDetailsCRM)) 
     { 
      IQueryable<SzkolenieMiejsca> listaMiejsc = from d in context.SzkolenieMiejscas 
                    select d; 


      ComboBoxItemCollection collection = comboBox.Properties.Items; 
      collection.BeginUpdate(); 
      foreach (var miejsce in listaMiejsc) 
      { 
       collection.Add(miejsce); 
      } 
      collection.EndUpdate(); 
      comboBox.SelectedIndex = -1; 
     } 
0

组件支持服务器模式与实体框架4.0的结合:

Linq Server Mode and Entity Framework 4.0

它可以自定义实体的DataContext在需要的方式使用它作为LinqServerModeSource的可查询的资料来源:

IQueryable<UrzedySkarboweWojewodztwa> listaWojewodztw = 
    from d in context.UrzedySkarboweWojewodztwas 
    select d; 

... 

lookUpEdit1.Properties.DataSource = new LinqServerModeSource() { 
     ElementType = ..., 
     KeyExpression = ..., 
     QueryableSource = listaWojewodztw 
    }; 

... 
+0

你能扩大解答吗?我将列名添加为'KeyExpression'的字符串,并删除了'ElementType'(因为它声称只用于内部使用)并且什么都没有发生。我是否必须添加更多东西以显示在GUI中? – MadBoy 2012-01-29 18:07:37

+0

我建议仅用于服务器模式目的的代码。我建议你联系DX家伙以获得更多解释。 – Mikhail 2012-01-30 18:08:24

+0

我从DX那里得到了一个我无法使用LinqServerMode的答案 - >'我们的LookUpEdit不支持服务器模式。只有GridLookUpEdit,SearchLookUpEdit和GridControl支持这种模式。所以,你不能使用LinqServerModeSource作为LookUpEdit数据源。' – MadBoy 2012-01-30 19:52:38