首页 > 解决方案 > 带有扩展库的自定义按钮

问题描述

任何人都可以帮助我使用自定义按钮。我已经添加了它,但它不起作用。我做错了什么?

  1. 我创建了一个自定义项目“测试”
  2. 添加了具有以下代码的扩展库:
public class ProjectEntry_Extension : PXGraphExtension<ProjectEntry>
    {
        public const string TestMsg = "Hello World";
        public static bool IsActive()
        {
            return true;
        }

        [PXUIField(DisplayName = "TestMethod")]
        [PXButton]
        public void TestMethod()
        {           
                throw new PXException(TestMsg);
        }
}
  1. 在屏幕上添加了一个按钮,并在我的测试方法 TestMethod 中添加了一个单击事件, 请参见此处的屏幕截图
  1. 发布项目

也许有人可以分享一份详细且易于理解的手册,说明如何使用扩展库添加按钮,或者可能是视频说明的链接。我查看了 Aсumatiсa 文档 - 但显然我误解了它。

标签: acumatica

解决方案


尝试将 PXAction 类型添加到您的扩展中,并使用 IEnumerable 作为方法返回类型。用于 PXAction 的类型将对应于屏幕的主 DAC。

public class ProjectEntry_Extension : PXGraphExtension<ProjectEntry>
{
    public static bool IsActive() => true;

    public const string TestMsg = "Hello World";

    public PXAction<PMProject> testMethod;

    [PXUIField(DisplayName = "TestMethod")]
    [PXButton]
    public virtual IEnumerable TestMethod(PXAdapter adapter)
    {
        throw new PXException(TestMsg);

        // used to return on standard Actions
        return adapter.Get();
    }
}

对于放置在表单上的按钮,我不确定,但我相信您应该展开 AutoCallBack 部分并使用您的方法名称作为 Command 属性的值,而不是使用 click。您可能还需要将 AutoCallBack 目标值设置为 ds。


推荐阅读