Acumatica 2024 R1:GL403000表单添加子账户描述列失败求助
解决Acumatica 2024 R1 GL403000表单添加子账户描述列无数据问题
问题原因
你当前使用PXDBScalar直接关联Sub表获取描述,但GLHistoryEnquiryResult是查询结果类(非物理数据库表),PXDBScalar依赖数据库表的直接关联映射,无法对这类临时结果集生效,导致列无数据。
正确实现步骤
1. 调整DAC扩展代码
移除PXDBScalar,改用非数据库绑定字段标记,代码如下:
public class GLHistoryEnquiryResultExt : PXCacheExtension<GLHistoryEnquiryResult> { [PXString(60, IsUnicode = true)] [PXUIField(DisplayName = "子账户描述")] [PXUnboundDefault] public virtual string UsrSubaccountDescription { get; set; } public abstract class usrSubaccountDescription : PX.Data.BQL.BqlString.Field<usrSubaccountDescription> { } }
2. 扩展表单图填充数据
通过扩展AccountHistoryBySubEnq图的行选择事件,在数据加载时从Sub表查询描述并赋值:
public class AccountHistoryBySubEnqExt : PXGraphExtension<AccountHistoryBySubEnq> { protected void _(Events.RowSelected<GLHistoryEnquiryResult> e) { GLHistoryEnquiryResult row = e.Row; if (row == null) return; Sub sub = PXSelect<Sub, Where<Sub.subCD, Equal<Required<Sub.subCD>>>>.Select(Base, row.SubCD); if (sub != null) { GLHistoryEnquiryResultExt ext = row.GetExtension<GLHistoryEnquiryResultExt>(); ext.UsrSubaccountDescription = sub.Description; } } }
3. 配置ASPX添加列
在GL403000的ASPX文件中,找到对应数据网格(PXGrid),添加如下列配置:
<px:PXGridColumn DataField="UsrSubaccountDescription" Width="200" />
核心说明
GLHistoryEnquiryResult是查询生成的临时结果集,并非物理数据库表,因此不能依赖数据库映射类属性获取关联数据,必须通过图的事件逻辑手动填充。RowSelected事件会在每行数据加载时触发,能确保子账户描述与当前行数据同步。
内容的提问来源于stack exchange,提问作者Andy258
相关产品推荐
相关产品推荐

