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数据源。