基于方法值的字段应用:Dialog类下拉框数据过滤实现问题
解决Dialog下拉仅显示过滤后选项的问题
看起来你需要限制Dialog中ReasonId下拉框的选项,只保留那些在DocumentReasons表中存在对应记录的值。这里的关键是给你的Dialog字段添加自定义Lookup逻辑,而不是直接依赖默认的枚举/表字段Lookup。
下面是具体的实现步骤:
1. 为Dialog字段绑定自定义Lookup方法
在你的dialog()方法中,添加完dialogReasonId之后,调用registerOverrideMethod替换默认的Lookup行为,指定我们自己写的Lookup方法:
public Object dialog() { DialogGroup dialogGroup; ; dialogRunbase = super(); dialogGroup = dialogRunbase.addGroup(); dialogGroup.caption("CaptionLabel"); dialogReasonId = dialogRunbase.addFieldValue(this.reasonId(), "Label1","Label2"); // 注册自定义Lookup方法,替换默认行为 dialogReasonId.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(YourDialogClassName, reasonIdLookup), this); return dialogRunbase; }
注意:把YourDialogClassName替换成你实际的Dialog类名称
2. 实现自定义Lookup方法
在你的Dialog类中添加reasonIdLookup方法,这个方法会查询DocumentReasons表,筛选出有效的ReasonId值,然后构建下拉选项:
public void reasonIdLookup(FormStringControl _control) { Query query; QueryBuildDataSource qbds; SysTableLookup sysTableLookup; EnumId reasonEnumId = enumNum(ReasonId); // 创建SysTableLookup实例,绑定到ReasonId枚举对应的系统表 sysTableLookup = SysTableLookup::newParameters(enumId2Table(reasonEnumId), _control); // 添加要显示的字段:枚举值和对应的标签(标签设为默认显示字段) sysTableLookup.addLookupField(fieldNum(ReasonId, Value)); sysTableLookup.addLookupField(fieldNum(ReasonId, Label), true); // 构建查询:从DocumentReasons表中获取所有存在的ReasonId,去重避免重复选项 query = new Query(); qbds = query.addDataSource(tableNum(DocumentReasons)); qbds.addField(fieldNum(DocumentReasons, ReasonId)); qbds.orderMode(OrderMode::GroupBy); // 将查询绑定到Lookup,执行自定义下拉逻辑 sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); }
关键细节说明:
- 如果
ReasonId不是枚举而是表字段,把enumId2Table(enumNum(ReasonId))替换为对应的表名(比如tableNum(ReasonTable)),并调整addLookupField的字段名。 - 代码中用
OrderMode::GroupBy确保下拉选项没有重复值,避免同一个ReasonId出现多次。 - 如果你需要基于当前类的其他参数做更精准的过滤,可以在查询中添加
QueryBuildRange条件,比如关联当前文档的其他属性。
3. 验证效果
当用户点击Dialog中的ReasonId下拉框时,就会触发这个自定义Lookup逻辑,只显示那些在DocumentReasons表中存在匹配记录的选项,而不是所有枚举/表数据。同时,默认选中的值仍然会保持你原来设置的this.reasonId()返回值,不需要额外修改。
内容的提问来源于stack exchange,提问作者Mark Van
相关产品推荐
相关产品推荐

