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