将按钮添加到案例屏幕上的顶部工具栏

Add button to the top toolbar on Case screen

我正在尝试在案例屏幕 (CR306000) 的 "TAKE CASE" 旁边添加一个新的工具栏按钮。我已经自定义 CRCaseMaint DAC,但按钮仍然没有出现。谁能给个建议。

您需要执行以下步骤:
1.创建class库(CL)。
2. 从 PX 开始的 Acumatica 文件夹中创建的 CL dll 中的引用。*
3. 在 CL 中添加新的 class CRCaseMaintExt 和成员 TakeCase,如下所示:

public class CRCaseMaintExt : PXGraphExtension<CRCaseMaint>
{
        private PXAction<CRCase> TakeCase2;

        [PXButton]
        [PXUIField(DisplayName = "Take Case")]
        public virtual IEnumerable takeCase2(PXAdapter adapter)
        {
            //your custom code
            return adapter.Get();
        }
}

4。请注意,TakeCase 中的 case 和 takeCase 很重要。也很重要 PXAction
5. 构建 CL
6. 将对 CL 的引用添加到您的 Acumatica 项目中。

还有一个原因。在基础图中有代码

public PXAction<CRCase> takeCase;
        [PXUIField(DisplayName = "Take Case", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Select)]
        [PXButton]
        public virtual IEnumerable TakeCase(PXAdapter adapter)

Acumatica 本身有按钮 TakeCase,它阻止了你的按钮 TakeCase。你需要明白,为什么你需要另一个按钮 Take Case,因为 Acumatica 团队已经实现了它。您确定要更换它吗?

复制了这个,问题和解决方案是 PXAction 应该是 public。在上面的示例中,它被标记为私有。

代码如下:

public class CaseExtension : PXGraphExtension<CRCaseMaint>
{
    public PXAction<CRCase> Change2;

    [PXButton(CommitChanges=true)]
    [PXUIField(DisplayName="Change Me")]
    protected virtual void change2()
    {

    }
}