在顶部导航栏中添加PXButton

时间:2018-07-19 17:33:40

标签: acumatica

如何将使用以下代码创建的PXActionButton放在Acumatica的顶部导航栏中。

public override void Initialize()
        {
            if (!String.IsNullOrEmpty(Base.PrimaryView))
            {

                Type primaryViewItemType = Base.Views[Base.PrimaryView].Cache.GetItemType();
                PXAction action = PXNamedAction.AddAction(Base, primaryViewItemType, "SubmitTicket", "Submit Ticket", TestClick);
            }
        }

        public IEnumerable TestClick(PXAdapter adapter)
        {
            throw new PXException("Button clicked from graph" + Base.GetType().Name);
        }

enter image description here 我试图在“框架”页面的Menu.aspx中进行编辑。但这似乎不是正确的选择。

是否可以通过PXGraphExtension中的代码在添加按钮的同时选择顶部导航作为容器?

enter image description here

1 个答案:

答案 0 :(得分:1)

您正在显示“ PM3010PL”的屏幕是通用查询屏幕: enter image description here

不能像其他常规屏幕(例如项目“ PM301000”)一样使用Acumatica项目编辑器自定义常规查询。这适用于所有后缀为“ PL”的屏幕。

编辑Menu.ASPX超出自定义范围,强烈建议不要这样做。为了实现您想要的功能,我将使用模板“ Grid(Grid View)”创建一个新的“自定义查询”屏幕,该模板在功能上等效于“ PM3010PL”。由于该屏幕将是“自定义查询”而不是“通用查询”,因此您可以像其他所有屏幕一样扩展图形和屏幕以对其进行自定义。

使按钮显示在顶部的技巧是用'PXProcessButton'属性而不是'PXButton'装饰动作事件处理程序:

  public class ProjectEntry_Extension : PXGraphExtension<ProjectEntry>
  {
    public PXAction<PMProject> testBill;

    [PXUIField(DisplayName = "Test Bill", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Select)]
    [PXProcessButton(Tooltip = "Test Bill")]
    public virtual IEnumerable TestBill(PXAdapter adapter)
    {
      return adapter.Get();
    }
  }

然后,您在“自定义”屏幕(按钮操作->“编辑ASPX”)中声明该操作,这是您可以在常规屏幕上执行但不能在“一般查询”中执行的部分: enter image description here

该操作将显示在顶部: enter image description here

编辑: 对于最顶部的导航栏(屏幕截图中的蓝色),这完全超出了自定义范围。我猜您可以在ASP中解决问题,但是不能打包到定制中,将被定制认证过程拒绝。