Acumatica:Kit Assembly屏幕报表按钮传参及MoveNext错误问题
解决Acumatica Kit Assembly屏幕自定义字段传入报表参数的问题
看起来你已经搞定了自定义字段UsrInventoryCD的填充逻辑,现在就差把这个值通过按钮传递到报表参数这一步了,我给你梳理下具体实现步骤和代码示例:
1. 确认报表参数配置
首先要确保你的目标报表已经定义了对应的参数(比如命名为InventoryCD,类型设置为字符串,和UsrInventoryCD的类型匹配),参数名称要和后续代码里的键值完全一致,大小写是敏感的哦。
2. 完善按钮事件的代码逻辑
假设你的按钮事件方法是在Kit Assembly的图形类(比如KitAssemblyEntry)里编写的,你可以这样补全代码:
protected void ReportButton_Click(PXAdapter adapter) { // 获取当前选中的Kit Assembly记录 KitAssembly currentKit = Base.Document.Current; if (currentKit == null) return; // 获取自定义字段UsrInventoryCD的值(这里的KitAssemblyExt是你的DAC扩展类) KitAssemblyExt kitExt = currentKit.GetExtension<KitAssemblyExt>(); string targetInventoryCD = kitExt.UsrInventoryCD; // 构建报表参数字典 Dictionary<string, string> reportParams = new Dictionary<string, string>(); // 这里的键要和报表参数的名称完全匹配 reportParams["InventoryCD"] = targetInventoryCD; // 触发报表跳转,替换"YourReportID"为你实际的报表ID(比如IN601000这类) throw new PXReportRequiredException(reportParams, "YourReportID", PXBaseRedirectException.WindowMode.NewWindow); }
关键注意事项
- 确保
KitAssemblyExt是你正确创建的DAC扩展类,必须继承自PXCacheExtension<KitAssembly>,并且包含UsrInventoryCD字段的定义。 - 如果你的按钮是通过ASPX页面配置的,要确保按钮的
CommandName属性和方法名对应;如果是通过代码动态添加的按钮,要把事件委托绑定到这个方法上。 - 如果
UsrInventoryCD可能为空,建议在代码里加个判断,避免传递空参数导致报表报错。
如果你的原有代码片段是这个方法的一部分,直接把上述获取字段和传递参数的逻辑嵌进去就可以了,核心就是通过DAC扩展拿到自定义字段值,再用PXReportRequiredException触发报表并传递参数。
内容的提问来源于stack exchange,提问作者Dane
相关产品推荐
相关产品推荐

