点击按钮打开GI

时间:2017-03-01 17:07:55

标签: acumatica

我已经在PO订单项网格和新GI上创建了一个按钮。我需要打开这些GI并自动将PO订单号作为参数传递给GI。

我在按钮事件处理程序中编写了以下代码。但是,它在内框架内打开GI(见截图),而不是在主窗口中打开。

public PXAction<POOrder> viewFullSODemandGI;

        [PXButton()]
        [PXUIField(DisplayName = "View Full SO Demand", MapEnableRights = PXCacheRights.Insert, MapViewRights = PXCacheRights.Insert)]
        protected virtual IEnumerable ViewFullSODemandGI(PXAdapter adapter)
        {
            var poOrderNbr = string.Empty;
            foreach (POOrder current in adapter.Get<POOrder>())
            {
                poOrderNbr = current.OrderNbr;
            }

            var sURL = PXUrl.ToAbsoluteUrl(HttpUtility.UrlPathEncode(string.Format("~/?CompanyID=Company&ScreenId=GI000092&POOrderNumber={0}", poOrderNbr.Trim())));

            throw new PXRedirectToUrlException(sURL, PXBaseRedirectException.WindowMode.New, false, null);
        }

enter image description here

请建议。

2 个答案:

答案 0 :(得分:4)

我猜两种方法之间的最大区别(@Brendan和@Krunal最初使用的另一种方法)是如何组成URL:

  • @Brendan建议使用相对网址

  • @Krunal撰写了绝对网址

与绝对网址的@Krunal完全相同。但是,使用下面任一代码片段组成的相对URL,该任务已成功实现:

  • 使用GI名称(查询标题):

    string inqName = "InvoicedItems";
    var url = new StringBuilder(PXGenericInqGrph.INQUIRY_URL).Append("?name=").Append(inqName).ToString();
    throw new PXRedirectToUrlException(url, PXBaseRedirectException.WindowMode.New, true, null);
    
  • 使用通用查询ID(来自数据库的GI的Guid):

    string inqID = "6b267dbb-0ff2-49b2-b005-355c544daba3";
    var url = new StringBuilder(PXGenericInqGrph.INQUIRY_URL).Append("?id=").Append(inqID).ToString();
    throw new PXRedirectToUrlException(url, PXBaseRedirectException.WindowMode.New, true, null);
    

还值得查看PXRedirectToGIRequiredException

  • 使用带有参数(SalespersonID)的GI名称(查询标题):

    string inqName = "SalespersonSales&SalespersonID=SP0003";
    throw new PXRedirectToGIRequiredException(inqName, PXBaseRedirectException.WindowMode.New, true);
    
  • 使用通用查询ID(来自数据库的GI的Guid):

    Guid inqID = Guid.Parse("6b267dbb-0ff2-49b2-b005-355c544daba3");
    throw new PXRedirectToGIRequiredException(inqID, PXBaseRedirectException.WindowMode.New, true);
    

PXRedirectToGIRequiredException的两个样本都可以绝对为GI参数赋值。

答案 1 :(得分:0)

更改您的窗口模式。我想你想使用InlineWindow。你也可以像这样使用网址......

throw new PXRedirectToUrlException(
    string.Format(@"~/GenericInquiry/GenericInquiry.aspx?ID=47842ccc-aa5d-4840-9d4a-7642cbf34cbe&POOrderNumber={0}", poOrderNbr.Trim()),
    BaseRedirectException.WindowMode.InlineWindow, 
    string.Empty);

在没有菜单附加功能的情况下在当前窗口中测试并加载。

我通常使用GI的guid“ID”与屏幕ID调用通用查询,因为Acumatica实例之间的屏幕ID可能不同。您可以从GI的导出中获取ID作为XML中的“DesignID”行。将示例中的ID值替换为GI DesignID值。