为了让所有历史记录能正常显示,GridLookup的数据源就要把作废的记录也取出来,但现在框架默认没有控制不允许选择作废的记录。
我们的需求往往是:用户编辑的话,不能让弹出的选择面板中显示出作废的记录。
怎么做呢,当然是跟着我做...
1、正常不编辑的情况下Lookupedit数据源为完全数据,当编辑时通过事件把编辑器换成另一个只绑定有效记录的编辑器。
2、打开编辑器时改变lookupedit数据源,关闭编辑器时还原数据源。
推荐:如果用于 GridControl 中时用第一种方案,如果是独立的 Lookupedit 控件,用第二种方案。(这里的控件名称用 DevExpress 的名字)
DataTable dt2 = dtData.Select("IsValid=1").CopyToDataTable(); //只取有效数据
edit.QueryPopUp += (s, e) => { if (!edit.ReadOnly) edit.DataSource=dt2; }; //非只读状态下打开编辑器时替换数据源
edit.Closed += (s, e) => { edit.DataSource = dtData; }; //关闭编辑器时还原数据源
其中 edit 是 DevExpress 的 GridLookUpEdit 控件,如果用 WnGridLookup 的话需要找到 DevExpress 的原生控件:
方案一需要的问我要吧有点啰嗦不发了~