【问题标题】:New Action to redirect to a page under Actions用于重定向到操作下的页面的新操作
【发布时间】:2018-02-20 22:44:55
【问题描述】:

我已经浏览了这里的一些问题,并找到了一个重定向到带有一些参数的报告的问题。我只想在“操作”下拉列表下添加一个新操作,它仅用于重定向到 Acumatica 中的新页面。具体来说,我正在向案例页面 (CR306000) 添加一个操作,并且该按钮会将用户重定向到销售订单页面。我知道创建按钮的代码是这样的:

[PXButton]
    [PXUIField(DisplayName = "Custom Action Title")]
    protected void CustomAction()
    {
        //stuff
    }

    public override void Initialize()
    {
        base.Initialize();
        Base.action.AddMenuAction(this.customAction);
    }

但是,我只是不知道重定向到新页面的代码是什么。我不确定只是一个 URL 去更好还是有办法以不同的方式去一个屏幕。

【问题讨论】:

    标签: action customization acumatica


    【解决方案1】:

    确切的代码取决于上下文,它是在新 Graph(使用 'this')还是 GraphExtension(使用 'Base')中,以及您是否要在新页面中选择销售订单。

    最常见的方法是创建您想要的屏幕图表(在本例中为 SalesOrderEntry)并重定向到该图表。

    这是一个图表扩展的事件处理程序示例,其中为新页面选择了销售订单:

    [PXUIField(DisplayName = "View Sales Order")]
    public virtual IEnumerable ViewSalesOrder(PXAdapter adapter)
    {
        const string salesOrderNbr = "SOXXXXXXX";
        const string salesOrderType = "SO";
    
        SOOrderEntry salesOrderEntry = PXGraph.CreateInstance<SOOrderEntry>();
    
        SOOrder salesOrder = PXSelect<SOOrder,
                                Where<SOOrder.orderNbr, Equal<Required<SOOrder.orderNbr>>,
                                And<SOOrder.orderType, Equal<Required<SOOrder.orderType>>>>>.Select(Base,
                                                                                                    salesOrderNbr,
                                                                                                    salesOrderType);
    
        if (salesOrderEntry != null && salesOrder != null)
        {
            salesOrderEntry.Document.Current = salesOrder;
            throw new PXRedirectRequiredException(salesOrderEntry, "Document") { Mode = PXBaseRedirectException.WindowMode.NewWindow };
        }
    
        return adapter.Get();
    }
    

    如果您不需要选择销售订单,这也应该可以:

    [PXUIField(DisplayName = "View Sales Order")]
    public virtual IEnumerable ViewSalesOrder(PXAdapter adapter)
    {
        throw new PXRedirectRequiredException(PXGraph.CreateInstance<SOOrderEntry>(), "Document") { Mode = PXBaseRedirectException.WindowMode.NewWindow };
    }
    

    对于某些具有 PXPrimaryGraph 属性的 DAC,您可以直接重定向到 DAC 对象:

    PXRedirectHelper.TryRedirect(Base, dacObject, PXRedirectHelper.WindowMode.NewWindow);
    

    【讨论】:

      【解决方案2】:

      您可以使用PXRedirectRequiredException 打开图表。我更喜欢使用PXRedirectHelper.TryRedirect。您可以搜索源代码以找到许多示例。基本上你需要你的图表加载你的记录和窗口模式。

      打开销售订单页面的示例...

      //...
      SOOrder doc = PXSelect<SOOrder, Where<SOOrder.noteID, Equal<Required<POFixedDemand.refNoteID>>>>.Select(this, line.RefNoteID);
      if (doc != null)
      {
          SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();
          graph.Document.Current = doc;
          PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);
      }
      //...
      

      【讨论】:

        猜你喜欢
        • 2019-08-25
        • 2019-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-03
        • 2012-09-04
        • 1970-01-01
        相关资源
        最近更新 更多