我想做以下工作:我在对话框的顶部有一个XtraGrid (短网格),可以选择例如报价。从所有经销商的名单上看,报价中有一个经销商。“要约”和“经销商”是XPO对象。在下面的部分,有一个GridLookUpEdit (简称LookUp)
也许我完全错了,因为我们以前使用过另一个数据映射器,但我完全被卡住了。
我定义了一个绑定到网格的XPCollection和绑定到LookUp的另一个XPCollection。
如果在Grid中选择一行,则根据所选行更改非XPO对象的查找值。一旦LookUp包含XPO对象,就不会显示任何内容。所有XPCollections的会话都是相同的。
如果我在LookUp中单击,将显示所有经销商的列表。
如果选择一个条目,则执行以下操作:
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是:
this.gridLookUpEditDealer.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.mainGrid, "Dealer", true));
this.gridLookUpEditDealer.Properties.DataSource = this.dealers; // dealers = XPCollection如果我试着:
this.gridLookUpEditDealer.EditValue = current.Dealer;LookUpEdit显示值,但也显示“值无效”。
我认为根本原因可能是网格中的值在LookUp中没有正确地绑定为值。但是怎样才是正确的方法呢?
发布于 2016-10-25 17:48:29
我认为问题是,你直接约束了整个经销商。如GridLookUpEdit中所述,设置您的DevExpress文档。
因此,您应该为您的LookupEdit执行以下操作:
这样你就可以拿回你的DealerObject了:
Dealer dealer = GridLookUpEdit.Properties.GetRowByKeyValue(lookUpEdit.EditValue) as Dealer;因为EditValue现在将成为你的DealerId。进一步注意,您可以在提供网格中直接使用repositoryGridLookupEdit。因此,您不需要超过一个网格以可用的方式显示您的信息。每个报价都可以有一个自己的经销商栏,拥有一个经销商。repositoryLookupEdit允许您在网格中编辑经销商。
我希望这能帮到你。如果不澄清你的问题,我将帮助你;)
发布于 2016-10-26 19:11:21
这只是实现同样结果的另一种方式。使用XPO时,如果您如下面所示更改绑定代码,GridLookUpEdit将自动更新order.Dealer属性。
this.gridLookUpEditDealer.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.mainGrid, "Dealer!", true));我只在属性名称后面添加了感叹号,现在可以删除以下代码:
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. 这个特性是专门为查找编辑器介绍的,本文介绍了这个特性:财产描述符。
https://stackoverflow.com/questions/40242966
复制相似问题