C# 将实体框架查询绑定到Devexpress LookUpEdit和ComboBoxEdit

C# 将实体框架查询绑定到Devexpress LookUpEdit和ComboBoxEdit,c#,winforms,entity-framework,entity-framework-4.1,devexpress,C#,Winforms,Entity Framework,Entity Framework 4.1,Devexpress,我有一个简单的表,其中只有一列urzadskarbowywojewdztwo,我正试图将Entity Framework查询附加到ComboBoxEdit或LookUpEdit(最好两者都作为参考)。考虑到我不想从GUI中执行此操作,有人可以分享一种方法吗 我尝试了多种方法,但每次都失败了。我肯定我错过了什么 using (var context = new EntityBazaCRM(Settings.sqlDataConnectionDetails)) {

我有一个简单的表,其中只有一列
urzadskarbowywojewdztwo
,我正试图将
Entity Framework
查询附加到ComboBoxEdit或LookUpEdit(最好两者都作为参考)。考虑到我不想从GUI中执行此操作,有人可以分享一种方法吗

我尝试了多种方法,但每次都失败了。我肯定我错过了什么

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);
使用(var context=newentitybazarcm(Settings.sqlDataConnectionDetails))
{
IQueryable listaWojewodztw=来自context.urzedyskarbowwojewodztwas中的d
选择d;
//lookUpEdit1.DataBindings.Add(“EditValue”,listawojewdztw,”,true);
lookUpEdit1.DataBindings.Add(“EditValue”,ListawOjewDztw,“urzadskarbowyOjewDztwo”,true);
lookUpEdit1.Properties.DataSource=listawOjewDztw.ToList();
lookUpEdit1.Properties.DisplayMember=“urzadskarbowywowedztwo”;
lookUpEdit1.Properties.ValueMember=“urzadskarbowywojewdtwo”;
LookUpColumnInfo col=新的LookUpColumnInfo(“UrzadSkarbowyWojewodztwo”,“Województwo”,100){SortOrder=DevExpress.Data.ColumnSortOrder.Ascending};
lookUpEdit1.Properties.Columns.Add(col);

基于LinqServerMode的组件支持与实体框架4.0的服务器模式绑定:

可以按要求的方式自定义实体DataContext,以将其用作LinqServerModeSource的可查询源:

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

...

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

...
IQueryable列表awojewodztw=
来自context.urzedyskarbowwojewodztwas中的d
选择d;
...
lookUpEdit1.Properties.DataSource=新的LinqServerModeSource(){
ElementType=。。。,
键表达式=。。。,
QueryableSource=listaWojewodztw
};
...

要能够将实体框架列表与DevExpress ComboBoxEdit绑定,需要创建额外的
分部
类,该类与我们试图放入
Comboxedit的
对象同名。在该类中,我们需要对
ToString()进行覆盖
对于要在ComboBox编辑中为用户显示的值

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;
        }
使用(var context=newentitybazarcm(Settings.sqlDataConnectionDetailsCRM))
{
IQueryable listaMiejsc=来自context.szkoleniemiejsca中的d
选择d;
ComboBoxItemCollection集合=comboBox.Properties.Items;
collection.BeginUpdate();
foreach(listaMiejsc中的变量miejsce)
{
collection.Add(miejsce);
}
collection.EndUpdate();
comboBox.SelectedIndex=-1;
}

你能扩展这个答案吗?我将列名作为字符串添加到
KeyExpression
中,并删除了
ElementType
(因为它声称仅用于内部使用)什么也没有发生。我需要添加更多的东西才能在GUI中显示吗?我建议的代码仅用于服务器模式。我建议您联系DX人员以获得更多解释。我从DX得到一个答案,我不能使用LinqServerMode->
我们的LookUpEdit不支持服务器模式。只有GridLookUpEdit、SearchLookUpEdit和Grid控件支持此模式。因此,不能将LinqServerModeSource用作LookUpEdit数据源。