You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

X++字符串类型Lookup查找字段的过滤逻辑适配问题求助

解决方案

你之前使用的SysReferenceTableLookup类是专门为Int64类型的引用分组(reference group)控件设计的,仅支持返回RecId类型的值,字段改为字符串类型后,需要改用适配普通字段查找的SysTableLookup类实现过滤逻辑,修改后的代码如下:

[FormControlEventHandler(formControlStr(InventSite, InventSite_MyField), FormControlEventType::Lookup)]
public static void InventSite_MAndEDay_OnLookup(FormControl sender, FormControlEventArgs e)
{
    // 替换为SysTableLookup适配字符串类型控件
    SysTableLookup tableLookup = SysTableLookup::newParameters(tableNum(ReferenceTables), sender);
    Query query = new Query();
    QueryBuildDataSource qbds = query.addDataSource(tableNum(ReferenceTables));
    // 原有过滤逻辑保持不变
    qbds.addRange(fieldNum(ReferenceTables,ReferenceTablesType )).value(queryValue(ReferenceTablesTypeBaseEnum::MyField));
    // 显式指定要返回的字符串字段,可根据实际业务需求调整目标字段
    tableLookup.parmReturnField(fieldNum(ReferenceTables, Name));
    tableLookup.addLookupField(fieldNum(ReferenceTables, Name ));
    tableLookup.addLookupField(fieldNum(ReferenceTables, Description ));
    tableLookup.parmQuery(query);
    tableLookup.performFormLookup();
}

核心修改说明

  • 替换查找实现类:将SysReferenceTableLookup替换为SysTableLookup,适配非引用类型的普通字段查找场景
  • 新增返回字段指定:调用parmReturnField方法明确查找后回写到控件的字段,避免默认返回RecId导致类型不匹配报错

注意事项

请确保parmReturnField指定的字段是ReferenceTables表中的字符串类型字段,且字段长度和当前表单控件绑定的字段长度一致,避免出现值截断或匹配错误的问题,之前配置的表关系无需调整,选值后会自动触发校验。

内容的提问来源于stack exchange,提问作者Granger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:09:02