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

如何在Acumatica活动屏幕(CR306010)判断点击的按钮类型

区分Acumatica活动屏幕(CR306010)的Save、Save & Close、Complete按钮点击

嘿,我来帮你搞定在Acumatica活动屏幕里区分这三个按钮点击的问题!我们可以通过重写对应按钮的处理逻辑,结合PXContext.Session.SetString来标记当前点击的按钮类型,之后在需要的地方读取这个标记即可。下面分按钮逐一说明:

1. 处理Complete按钮

你已经找对了方向——重写markAsCompleted方法是捕捉Complete按钮点击的正确方式,下面是完整的代码示例:

public class CRActivityMaintExt : PXGraphExtension<CRActivityMaint>
{
    public delegate void markAsCompletedDelegate();

    [PXOverride]
    public void markAsCompleted(markAsCompletedDelegate baseMethod)
    {
        // 标记当前点击的是Complete按钮
        PXContext.Session.SetString("ClickedButton", "Complete");
        
        // 执行原方法的默认逻辑
        baseMethod();
    }
}

2. 处理Save和Save & Close按钮

这两个按钮最终都会触发数据持久化,但我们可以直接给对应的按钮Action添加前置逻辑来区分:

public override void Initialize()
{
    base.Initialize();
    
    // 为Save按钮添加点击标记
    Base.SaveButtonPressed.AddHandler((sender, e) =>
    {
        PXContext.Session.SetString("ClickedButton", "Save");
    });
    
    // 为Save & Close按钮添加点击标记
    Base.SaveAndClose.AddHandler((sender, e) =>
    {
        PXContext.Session.SetString("ClickedButton", "SaveAndClose");
    });
}

3. 读取按钮标记(在需要的逻辑中使用)

在你需要判断按钮类型的代码位置,读取Session中存储的标记即可:

string clickedButton = PXContext.Session.GetString("ClickedButton");
switch(clickedButton)
{
    case "Save":
        // 执行Save按钮对应的自定义逻辑
        break;
    case "SaveAndClose":
        // 执行Save & Close按钮对应的自定义逻辑
        break;
    case "Complete":
        // 执行Complete按钮对应的自定义逻辑
        break;
}

小提醒

记得在使用完标记后,最好清除Session中的值,避免后续逻辑被旧标记干扰:PXContext.Session.SetString("ClickedButton", null);

内容的提问来源于stack exchange,提问作者Taras

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:38:07