Acumatica自定义页面加载时按条件重定向的合规替代方案咨询
合规的Acumatica页面首次加载重定向方案
在自定义页面首次加载时,可以根据特定条件实现重定向。你之前在RowSelected事件中处理的问题在于:该事件会在每行选中时触发(并非仅首次加载),且在此事件中创建Graph实例违反Acumatica性能最佳实践,因此会触发系统警告。
推荐在Graph的Initialize方法中处理首次加载的重定向逻辑,该方法仅在Graph初始化时执行一次,完美匹配首次加载场景,且符合系统规范:
代码示例
public class CurrentGraph : PXGraph<CurrentGraph> { public PXSelect<PrimaryDAC> PrimaryView; public override void Initialize() { base.Initialize(); // 仅在首次加载(非回发、非回调)时执行逻辑 if (!IsPostBack && !IsCallback) { // 替换为你的特定条件判断逻辑 bool someExpression = /* 你的条件判断,比如基于参数/初始数据 */; if (someExpression) { int? targetClassID = /* 获取目标ClassID的逻辑 */; AnotherGraph targetGraph = PXGraph.CreateInstance<AnotherGraph>(); // 查找目标记录 var targetDoc = targetGraph.Documents.Search<MyClass.ClassID>(targetClassID); if (targetDoc != null) { targetGraph.Documents.Current = targetDoc; // 触发重定向,第三个参数true表示打开新标签页(按需调整) throw new PXRedirectRequiredException(targetGraph, "跳转提示信息", true); } } } } }
关键说明
- 时机控制:通过
IsPostBack和IsCallback判断,确保重定向逻辑仅在页面首次加载时执行,避免回发或回调时重复触发。 - Graph实例创建:在
Initialize中创建目标Graph实例是合规的,因为该方法仅执行一次,不会引发性能问题。 - 记录定位:通过
Search方法找到目标记录后,需将其设置为目标Graph的当前记录,确保跳转后页面显示正确数据。
内容的提问来源于stack exchange,提问作者user30513632
相关产品推荐
相关产品推荐

