【问题标题】:How to implement Post/Redirect/Get pattern in CRM 2011 custom Case Close window如何在 CRM 2011 自定义案例关闭窗口中实施发布/重定向/获取模式
【发布时间】:2014-03-04 14:22:07
【问题描述】:

我创建了一个自定义的“解决案例”窗口,它取代了 CRM 的默认案例解决窗口。我所做的是我用我自己的按钮替换了“解决案例”功能区按钮,单击该按钮会打开一个自定义 HTML 页面。然后,当用户在该页面上按下 Resolve 按钮时,会创建一个 SOAP 消息来解决该特定情况。在 SOAP 消息之后,我调用 window.close() 来关闭“解决案例”窗口。之后我调用 location.reload() 以便重新加载主窗体并刷新功能区。所以它(从用户的角度来看)就像默认的案例解析窗口一样工作。

现在有一个问题。如果用户在解决案例后重新激活它,然后再次解决它,我会收到以下消息(来自浏览器的弹出警报):

“要重新显示网页,浏览器需要重新发送您之前提交的信息。如果您正在购买,您应该点击取消以避免重复交易。否则,请点击重试重新显示网页。 "

我发现问题是因为我使用 location.reload() 重新加载主表单,因此出现重复的表单提交。我尝试使用 window.location = window.location、location.href = location.href 等代替 location.reload() 但它们都不适合我。他们似乎刷新了主窗体(至少它闪烁了),但功能区没有刷新。我也尝试使用 Xrm.Page.ui.refreshRibbon(),但也没有什么不同。

我从互联网上搜索了一个解决方案,人们正在谈论 Post/Redirect/Get 模式。我找不到任何明确的示例如何实现它,所以我希望你能帮助我理解它以及如何在这种特殊情况下使用它。

如果需要,将提供更多信息和代码示例。

【问题讨论】:

  • 这里提供的任何一种解决方案都有帮助吗? [在自定义子表单上完成操作后,如何在 CRM Dynamics 5.0 中刷新父表单?][1] [1]:stackoverflow.com/questions/4094058/…
  • 您能否提供一些示例代码,包括 window.location 示例?

标签: javascript dynamics-crm-2011 dynamics-crm post-redirect-get


【解决方案1】:

我倾向于使用以下内容来刷新记录的表单(您可能希望将其包装在一个函数中):

// Open form with same record.
var newWindow = Xrm.Utility.openEntityForm(entityName, entityId);

// After rollup 12, this function returns a boolean instead of
// the window object.
if (typeof newWindow === 'boolean') {
    // The name of the window, when the record is not new, is equal to the record GUID,
    // without {, } or - characters. When it is equal, were done. Otherwise, close
    // the current window.
    if (window.top.name.toLowerCase() === entityId.replace(/[\{\}\-]/gi, "").toLowerCase()) {
        return;
    }

    Xrm.Page.ui.close();
    return;
}

// Before rollup 12, the function returns a window object. Compare the window objects.
// When they're not equal, close the current window.
if (newWindow.top !== window.top) {
    Xrm.Page.ui.close();
    return;
}

根据我的经验,这始终有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多