首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GridLookUpEdit绑定到XtraGridColumn的正确方法

将GridLookUpEdit绑定到XtraGridColumn的正确方法
EN

Stack Overflow用户
提问于 2016-10-25 14:43:08
回答 2查看 1.5K关注 0票数 0

我想做以下工作:我在对话框的顶部有一个XtraGrid (短网格),可以选择例如报价。从所有经销商的名单上看,报价中有一个经销商。“要约”和“经销商”是XPO对象。在下面的部分,有一个GridLookUpEdit (简称LookUp)

也许我完全错了,因为我们以前使用过另一个数据映射器,但我完全被卡住了。

我定义了一个绑定到网格的XPCollection和绑定到LookUp的另一个XPCollection。

如果在Grid中选择一行,则根据所选行更改非XPO对象的查找值。一旦LookUp包含XPO对象,就不会显示任何内容。所有XPCollections的会话都是相同的。

如果我在LookUp中单击,将显示所有经销商的列表。

如果选择一个条目,则执行以下操作:

代码语言:javascript
复制
Order order = gridView.GetRow(gridView.FocusedRowHandle);  => shows an order
Dealer actDealer = this.gridLookUpEditDealer.EditValue as Dealer; => shows a Dealer

order.Dealer = actDealer; => lets the selected value vanish. 

this.gridLookUpEditDealer.EditValue保持不变,但不再显示。

DataBinging of LookUp是:

代码语言:javascript
复制
this.gridLookUpEditDealer.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.mainGrid, "Dealer", true));
this.gridLookUpEditDealer.Properties.DataSource = this.dealers; // dealers = XPCollection

如果我试着:

代码语言:javascript
复制
this.gridLookUpEditDealer.EditValue = current.Dealer;

LookUpEdit显示值,但也显示“值无效”。

我认为根本原因可能是网格中的值在LookUp中没有正确地绑定为值。但是怎样才是正确的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-25 17:48:29

我认为问题是,你直接约束了整个经销商。如GridLookUpEdit中所述,设置您的DevExpress文档

因此,您应该为您的LookupEdit执行以下操作:

  1. 设置LookupEdit.ValueMember = "DealerId";
  2. 将EditValue绑定到此DealerId。
  3. 设置LookupEdit.DisplayMember = "Name";/或某事物。你喜欢展示
  4. 设置您的LookupEdit.DataSource =YourDealer

这样你就可以拿回你的DealerObject了:

代码语言:javascript
复制
Dealer dealer = GridLookUpEdit.Properties.GetRowByKeyValue(lookUpEdit.EditValue) as Dealer;

因为EditValue现在将成为你的DealerId。进一步注意,您可以在提供网格中直接使用repositoryGridLookupEdit。因此,您不需要超过一个网格以可用的方式显示您的信息。每个报价都可以有一个自己的经销商栏,拥有一个经销商。repositoryLookupEdit允许您在网格中编辑经销商。

我希望这能帮到你。如果不澄清你的问题,我将帮助你;)

票数 1
EN

Stack Overflow用户

发布于 2016-10-26 19:11:21

这只是实现同样结果的另一种方式。使用XPO时,如果您如下面所示更改绑定代码,GridLookUpEdit将自动更新order.Dealer属性。

代码语言:javascript
复制
this.gridLookUpEditDealer.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.mainGrid, "Dealer!", true));

我只在属性名称后面添加了感叹号,现在可以删除以下代码:

代码语言:javascript
复制
Order order = gridView.GetRow(gridView.FocusedRowHandle);  => shows an order
Dealer actDealer = this.gridLookUpEditDealer.EditValue as Dealer; => shows a Dealer

order.Dealer = actDealer; => lets the selected value vanish. 

这个特性是专门为查找编辑器介绍的,本文介绍了这个特性:财产描述符

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40242966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档