PXRedirectToUrlExcption - 控制窗口模式(Acumatica 4.2)

时间:2015-07-15 18:10:19

标签: acumatica

我的情况是,我需要能够在弹出窗口,iframe,当前窗口(我可以开始工作)中显示来自其他网站的页面。

在我的流程(机会)中需要这个,我需要调用管理某些特定配置的外部应用程序,然后通过WebAPI将其保存回数据库。

目前我有一个方法可以构建我的url并将其传递给PXRedirectToUrlException来进行调用。这是在服务器端完成的,因为我需要根据当前机会提取特定数据以构建正确的URL以便传递。

我发现,如果重定向网址与我的开发服务器位于同一个基本域中,它可以按预期使用WindowMode工作,但是如果重定向网址位于不同的域中,则会始终打开新页面中的新页面。

调试呼叫我看到当它在同一页面上时,呼叫返回一个" Redirect0"但是,在不同的域上,它会调用" Redirect4"

通过重定向例外是否有办法执行此操作(在弹出窗口/ iframe /当前窗口中打开单独域中的页面)?

我想到的另一个选择是,如果没有,那就是拥有一个虚拟页面,调用该页面,然后通过javascript或标准的aspx调用来处理重定向。

任何想法/建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我之前得到了一个样品,你可以尝试一下。在这里,我们创建一个带有DAC的虚拟图形用于过滤器和虚拟过滤器,稍后我们在窗体视图中创建一个带过滤器的asp,wch有助于根据需要使用一些javascript附加URL并在智能面板中显示外部页面。 。代码如下

C#

with sheet2.cells(1,1).resize(99,1)
    .formula = "='Sheet1'!A1&"-qwerty"
    .value = .value
end with

JAVA SCRIPT

 [Serializable]
    public class UrlFilter : IBqlTable
    {
        #region FilterParam
        public class filterParam : IBqlField { }
        [PXString(50, IsUnicode = true)]
        [PXUIField(DisplayName = "Parameter")]
        public string FilterParam { get; set; }
        #endregion
    }

    [Serializable]
    public class DummyClass : IBqlTable
    {
    }

    public class UrlGraph : PXGraph<UrlGraph>
    {
        public PXFilter<UrlFilter> Filter;

        public PXFilter<DummyClass> DummyRecord;

        public PXAction<UrlFilter> Action;
        [PXButton(CommitChanges = true)]
        protected void action()
        {
        }
    }

表格和智能面板

<script type="text/javascript" language="javascript">
        function commandResult(ds, context) {
            var paramIdCtrl, smartpanel, param;
            for (var key in ds.px_context.px_all) {
                if (key.indexOf("_edFilterParam") > 0) {
                    paramIdCtrl = ds.px_context.px_all[key];
                }
                if (key.indexOf("_ExternalWebsitePanel") > 0) {
                    smartpanel = ds.px_context.px_all[key];
                }
            }
            if (paramIdCtrl || smartpanel) {
                param = paramIdCtrl.getValue();

                var newUrl = 'http://testsite.com/search.shtml?q=' + param;

                smartpanel.setPageUrl(newUrl);
                smartpanel.repaint();
            }
        }
    </script>