Acumatica框架中Side Panel导航的代码实现方案咨询
实现Acumatica Side Panel页面间导航的解决方案
嘿,我完全懂你的困扰——当初我找这个功能的时候也在PXRedirectHelper.WindowMode里翻了半天,确实没找到对应Side Panel的选项,因为这个枚举主要覆盖的是主窗口、普通弹窗这类场景。不过别慌,框架其实提供了专门的方式来实现帮助文档里描述的Side Panel导航,下面是具体的解决方法:
方法一:使用PXPopupRedirectException实现Side Panel跳转
这是框架原生支持的Side Panel导航方式,完全匹配帮助文档里的功能描述。你只需要在Action方法中抛出这个异常,指定PopupMode.SidePanel即可:
public PXAction<YourPrimaryDAC> OpenTargetSidePanel; [PXButton(CommitChanges = true)] [PXUIField(DisplayName = "跳转至Side Panel页面")] protected void openTargetSidePanel() { // 获取当前页面的选中记录 YourPrimaryDAC currentRecord = Base.Current; if (currentRecord == null) return; // 实例化目标页面的Graph TargetPageGraph targetGraph = PXGraph.CreateInstance<TargetPageGraph>(); // 传递上下文:设置目标Graph的当前记录(如果需要关联数据) targetGraph.Current = targetGraph.TargetDACs.SelectSingle(currentRecord.YourKeyField); // 抛出Side Panel跳转异常 throw new PXPopupRedirectException( targetGraph, "目标Side Panel页面标题", PXPopupRedirectException.PopupMode.SidePanel, true // 保持当前页面的上下文状态 ); }
关键说明:
PXPopupRedirectException.PopupMode.SidePanel就是对应帮助文档中Side Panel的模式,它是框架专门为侧边面板导航设计的枚举值,只是没放在PXRedirectHelper.WindowMode里而已。- 最后一个
true参数表示跳转后保留原页面的上下文(比如选中的记录、输入的内容),如果不需要可以传false。
方法二:Side Panel内部跳转至另一Side Panel页面
如果已经处于Side Panel页面中,需要跳转到另一个Side Panel页面,同样可以复用上面的方法——直接在当前Side Panel的Graph Action中抛出PXPopupRedirectException并指定SidePanel模式即可,框架会自动替换当前Side Panel的内容,不需要额外的配置。
注意事项
- 确保目标页面的ASPX配置支持弹窗模式:检查页面的
<px:PXPage>标签是否设置了Popup="True",否则可能无法在Side Panel中正常加载。 - 如果需要传递复杂参数,可以通过目标Graph的公共属性或者
PXCache的SetValue方法来传递,跳转后目标Graph可以读取这些参数进行初始化。
内容的提问来源于stack exchange,提问作者Amir Paziraee
相关产品推荐
相关产品推荐

