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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:42:43