如何隐藏Acumatica标准按钮

如何隐藏Acumatica标准按钮,acumatica,Acumatica,我在请购单屏幕上创建了一个新的创建报价按钮,它取代了位于操作菜单上的标准按钮。在RQRequisition_RowSelected事件中尝试隐藏后,该按钮仍会出现,并且在请购单处于挂起报价状态时可以单击。我需要建议如何隐藏它 要隐藏或显示操作按钮,应重新定义按钮的PXUIField属性的可见参数。 可以使用以下方法之一更改操作按钮的属性: 在运行时,在图的Initialize()方法中动态地 延伸 静态地,通过覆盖 图扩展 在运行时隐藏操作按钮 在图形扩展中,添加以下代码 public ov

我在请购单屏幕上创建了一个新的创建报价按钮,它取代了位于操作菜单上的标准按钮。在RQRequisition_RowSelected事件中尝试隐藏后,该按钮仍会出现,并且在请购单处于挂起报价状态时可以单击。我需要建议如何隐藏它


要隐藏或显示操作按钮,应重新定义按钮的PXUIField属性的可见参数。 可以使用以下方法之一更改操作按钮的属性:

  • 在运行时,在图的Initialize()方法中动态地 延伸
  • 静态地,通过覆盖 图扩展
在运行时隐藏操作按钮

在图形扩展中,添加以下代码

public override void Initialize()
{
  base.Initialize();
  Base.MyAction.SetVisible(false);
}
在添加的代码中,将MyAction替换为action名称

静态隐藏或显示动作按钮

要静态重写图形扩展中的操作属性,应同时声明PXAction类型的图形成员和委托。您应该将一组新的属性附加到在图形扩展中声明的动作委托。此外,还需要对基本图形操作调用Press()方法。重新声明了PXAction的成员后,就可以防止action委托从无限循环执行

  • 探索原始操作声明并将声明复制到图形扩展

  • 在操作声明中,将PXUIField属性的可见参数设置为false,如下代码段所示

    。。。 [PXUIField(…,Visible=false)]

  • 用以下代码模板替换操作委托

    公共虚拟IEnumerable myAction(PXAdapter) { 返回Base.MyAction.Press(适配器); }

  • 在代码模板中,用适当的名称替换myAction和myAction

  • 在模板中,根据基本动作委托的签名重新定义动作委托参数和返回类型
  • 如果有替换原始操作的自定义项 静态声明,将Acumatica ERP升级到新的 版本,相同操作的新功能可能成为 不可用


    此外,如果在PXDataSource控件中声明了按钮的回调命令,则可以通过自定义ASPX代码来隐藏按钮。为此,在布局编辑器中,展开PXDataSource控件,选择适当的PXDSCallbackCommand元素,并将元素的Visible属性设置为False。

    请购单屏幕上的CREATE QUOTE(创建报价)按钮与RQRequisitionEntry BLC中的正常操作类似:

    public class RQRequisitionEntry : PXGraph<RQRequisitionEntry>
    {
        ...
    
        public PXAction<RQRequisition> createQTOrder;
        [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntry)]
        [PXUIField(DisplayName = Messages.CreateQuotation)]
        public virtual IEnumerable CreateQTOrder(PXAdapter adapter)
        {
            ...
        }
    
        ...
    }
    
    公共类RQRequisitionEntry:PXGraph
    {
    ...
    公共秩序;
    [PXButton(ImageKey=PX.Web.UI.Sprite.Main.DataEntry)]
    [PXUIField(DisplayName=Messages.createQuotence)]
    公共虚拟IEnumerable CreateQTOrder(PXAdapter)
    {
    ...
    }
    ...
    }
    
    但是,“创建报价”按钮通过自动化步骤添加到“操作”下拉列表中:

    话虽如此,定制CreateQuote按钮的最佳方法是按照下面的示例在RQRequisitionEntry BLC扩展中重新声明操作。如果您提供有关您的请求的更多详细信息,我将很乐意提供更具体的样品

    public class RQRequisitionEntryExt : PXGraphExtension<RQRequisitionEntry>
    {
        public PXAction<RQRequisition> createQTOrder;
        [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntry)]
        [PXUIField(DisplayName = RQ.Messages.CreateQuotation)]
        public virtual IEnumerable CreateQTOrder(PXAdapter adapter)
        {
            return Base.createQTOrder.Press(adapter);
        }
    }
    
    公共类RQRequisitionEntryText:PXgrapherExtension
    {
    公共秩序;
    [PXButton(ImageKey=PX.Web.UI.Sprite.Main.DataEntry)]
    [PXUIField(DisplayName=RQ.Messages.createQuotence)]
    公共虚拟IEnumerable CreateQTOrder(PXAdapter)
    {
    返回Base.createQTOrder.Press(适配器);
    }
    }