请教一个cxGrid中LookupComboBox的问题

hpygzhx520 2012-12-20 10:28:12
如题,使用Devexpress组件中的cxGrid表格控件。现在有两列,两列都设置了LookupComboBox属性。

第一列是编号,第二列是名称

两列的listsource都是同一个UniDataSource2。UniDataSource2对应的UniQuery2设置为缓存提交。因为只有数据录入完整才能更新(提交)。

第一列的ListFieldNames=编号;名称,而KeyFieldNames=编号

第二列的ListFieldNames=名称;编号,而KeyFieldNames=名称


之所以这样设计,是期望下拉选择任意一列,另外一列跟随变化。

尝试了很多事件都不成功,最后有一个接近的,在PropertiesValidate事件中,将DisplayValue赋值给当前列(理论上来说是不需要这个操作的,假设不写这个事件里面的代码就不需要这样),想办法取得对应的另外一列的值,赋值给另外一列。

但诡异的问题来了,另外设置的单元格的值不会显示出来,必须点击一下单元格,或者切换一下焦点。

请教各位如何解决?谢谢。

...全文
462 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hpygzhx520 2012-12-22
  • 打赏
  • 举报
回复
世界末日都过了还没解决
hpygzhx520 2012-12-21
  • 打赏
  • 举报
回复
RedrawWindow都用了,无效,一定要点击一下或者让其他控件得到焦点才会显示。但cxTextEdit1.SetFocus;这样的又无效。苍天啊,大家帮忙,谢谢
hpygzhx520 2012-12-21
  • 打赏
  • 举报
回复
onchange尝试过的 procedure TfrmAddProductionSchedule.cxGrid1DBTableView1STATIONIDPropertiesChange(Sender: TObject); begin UniQuery1.FieldByName('stationid').Value:= cxGrid1DBTableView1STATIONID.EditValue;//这行写与不写,当前单元格都没有值,空的 UniQuery1.FieldByName('stationname').Value:=UniQuery2.FieldByName('stationname').Value; end;
-HelloWorld- 2012-12-21
  • 打赏
  • 举报
回复
为何不在oneditvaluechanged事件里写,然后直接用XXXQuery.FieldByName().XXX的方式赋值呢?

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧