随笔 - 73  文章 - 0 评论 - 41 阅读 - 26455
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

有时需要动态为RepositoryItemLookUpEdit绑定数据源,比如联动选择的场景或者我们仅仅是需要一个下拉选择框而
并不想要GridView的列与RepositoryItemLookUpEdit的数据源有强绑定关系。但是GridView的列在绑定事先定义RepositoryItemLookUpEdit后是针对所有行生效的。
基于以上原因,使得在中途如果再为RepositoryItemLookUpEdit.DataSource赋与新的数据源,则会导值已经选择的其他行的此列值被置为空,
或者出现无法弹出RepositoryItemLookUpEditView。
解决以上问题的方法是为每个GridView的行都创建一个RepositoryItemLookUpEdit并在创建后为它绑定新的数据源。如下:

复制代码
 1                 gridView2.CustomRowCellEditForEditing += (x, y) =>
 2                 {
 3                     if (y.Column.FieldName != "materiaGoodsid")
 4                         return;
5 6 DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit repositoryItem = new DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit(); 7 y.RepositoryItem = repositoryItem; 8 string barcode = Convert.ToString(gridView2.GetFocusedDataRow()["cptm"]).Trim(); 9 if (barcode == null) 10 return; 11 repositoryItem.DisplayMember = "cptm"; 12 repositoryItem.ValueMember = "cptm"; 13 repositoryItem.DataSource = new jiben.SubstituteAggregate().GetComplianceListByBarCode(barcode); 14 repositoryItem.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; 15 //从列表中选择项后,绑定一个选值改变事件,以便于把列表中的其他列的值赋与gridView2中需要的列 16 repositoryItem.EditValueChanged += (m,n)=> { 17 DataRow dr = gridView2.GetFocusedDataRow(); 18 var materiaObject = (m as DevExpress.XtraEditors.LookUpEdit).GetSelectedDataRow(); 19 dr["materiaName"] = materiaObject.GetType().GetProperty("cpmc").GetValue(materiaObject); 20 };
复制代码

 

posted on   hrx521  阅读(1379)  评论(9编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示