0

У меня простая таблица с только одним столбцом UrzadSkarbowyWojewodztwo, что я пытаюсь подключить Entity Framework запрос к ComboBoxEdit или LookUpEdit (желательно как для справки). Может ли кто-то поделиться с этим способом, учитывая, что я не хочу делать это из графического интерфейса?Запрос привязки сущности к Devexpress LookUpEdit и ComboBoxEdit

Я пробовал несколько способов, и это просто терпит неудачу каждый раз. Я уверен, что я что-то не хватает ... поддержка компонентов

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

Чтобы иметь возможность связать Entity Framework список с 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

LinqServerMode-сервер на основе режима связывания с Entity Framework 4.0:

Linq Server Mode and Entity Framework 4.0.

Можно настроить Entity DataContext требуемым образом, чтобы использовать его в качестве источника запрашиваемых в LinqServerModeSource:

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

... 

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

... 
+0

Можете ли вы расширить этот ответ? Я добавил имя столбца в виде строки в «KeyExpression» и удалил элемент «ElementType» (поскольку он утверждает, что он используется только для внутреннего использования), и ничего не происходит. Нужно ли мне добавлять что-то еще для того, что должно отображаться в графическом интерфейсе? – MadBoy

+0

Код, который я предложил только для режима сервера. Я предлагаю вам обратиться к ребятам из DX для получения дополнительных пояснений. – Mikhail

+0

Я получил ответ от DX, что я не могу использовать LinqServerMode -> 'Наш LookUpEdit не поддерживает режим сервера. Только GridLookUpEdit, SearchLookUpEdit и GridControl поддерживают этот режим. Таким образом, вы не можете использовать LinqServerModeSource в качестве источника данных LookUpEdit. ' – MadBoy

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