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

时间:2012-01-28 17:31:28

标签: c# winforms entity-framework entity-framework-4.1 devexpress

我有一个只有一列UrzadSkarbowyWojewodztwo的简单表,我正在尝试将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);

2 个答案:

答案 0 :(得分: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
    };

...

答案 1 :(得分:0)

为了能够将实体框架列表与DevExpress ComboBoxEdit绑定,需要创建额外的partial类,该类与我们尝试放入object的{​​{1}}同名。在该类中,我们需要在ComboBoxEdit上覆盖我们想要在用户的ComboBoxEdit中显示的值。

ToString()

然后我们只需将对象分配给public partial class SzkolenieMiejsca : EntityObject { public override string ToString() { return _MiejsceSzkolenia; } } ,Devexpress将完成剩下的工作。

ComboBoxItemCollection