【问题标题】:Dynamics CRM 2016 Online - Refresh record after using dialogDynamics CRM 2016 Online - 使用对话框后刷新记录
【发布时间】:2016-09-21 09:38:12
【问题描述】:

我的功能区上有一个自定义按钮,可以启动一个对话框。这是我正在整合的解决方法资格解决方案的一部分。

帐户/联系人/机会的创建和给定的选择工作正常,以及将潜在客户的状态更改为合格。问题是当用户完成对话框并关闭它时,他们仍然在查看原始状态的潜在客户。

如何强制刷新表单以显示其新状态?

我在网上看到了一个 Javascript 解决方案 (codeplex),Process.js - callDialog() 似乎很流行,但它不想像创建者在我的 CRM 版本上描述的那样工作 - 总是得到一个无效的 URL 错误消息并在加载表单以及使用自定义按钮时触发。

有没有人遇到过这样的需求,您是如何解决的?

谢谢

编辑:这是我目前在功能区按钮上使用的 JS。我在哪里放置我的刷新调用以及关闭对话框时我应该调用什么/如何调用正在使用的事件。 我尝试在此代码的底部添加一个刷新调用,但它是在开始时打开对话框时调用的,这并没有多大用处,因为我想看到的更改应用于整个对话框本身。 谢谢

Develop1_RibbonCommands_runDialogForm = function(objectTypeCode, dialogId) {
    var primaryEntityId = Xrm.Page.data.entity.getId();
    var rundialog = Mscrm.CrmUri.create('/cs/dialog/rundialog.aspx');
    rundialog.get_query()['DialogId'] = dialogId;
    rundialog.get_query()['ObjectId'] = primaryEntityId;
    rundialog.get_query()['EntityName'] = objectTypeCode;
    var hostWindow = window;
        if (typeof(openStdWin) == 'undefined') {
            hostWindow = window.parent; // Support for Turbo-forms in CRM2015 Update 1
        }
        if (typeof(hostWindow.openStdWin) != 'undefined') {
            hostWindow.openStdDlgWithCallback(rundialog, hostWindow.buildWinName(null), 615, 480, Xrm.Page.data.refresh(false));
        } 
}
})();

【问题讨论】:

  • 嗨,alex,您可以为功能区按钮编写 javascript。您只需要使用 javascript 运行对话框并使用以下代码刷新表单 Xrm.Utility.openEntityForm(Xrm.Page.data.entity.getEntityName(), Xrm.Page.data.entity.getId());

标签: javascript dynamics-crm crm microsoft-dynamics


【解决方案1】:

查看Xrm.Page.data (client-side reference),您需要致电Xrm.Page.data.refresh()

根据您启动对话的方式,并假设您的对话是托管在 CRM 中的网络资源,对话可以返回到它启动的表单并调用刷新,或者可能会使用回调。

编辑(基于您发布的代码):如果函数 openStdDlgWithCallback 的第 5 个参数是对话框关闭时的回调,您希望传递函数,如 Xrm.Page.data.refresh 或将您的调用包装在函数function(){Xrm.Page.data.refresh()} 中。目前您的代码正在立即执行该功能,这就是您立即看到刷新的原因。

【讨论】:

  • 感谢马特,我已将我的 JS 添加到原始帖子中 - 请您提供建议。
  • 早上第一件事会尝试这个并报告。谢谢!
  • 成功了!非常感谢您对此的帮助。我的下一个挑战是在等待刷新发生时锁定表单。关闭对话框后,需要几秒钟时间,在用户面前出现一个可编辑的表单,刷新才会启动。
【解决方案2】:

使用openStdDlgWithCallback,您可以订阅一个在对话框关闭后运行的回调函数。然后您可以在回调函数中使用Xrm.Page.data.refresh()

【讨论】:

  • 这似乎会刷新,但它会在对话框打开之前触发。如果我更改了一个字段,然后点击了自定义按钮,它会询问我是否要先保存更改 - 如果我单击 OK 继续进行,它会刷新表单(恢复我的更改),然后打开对话框。我需要以相反的顺序发生这种情况哈!
  • 好的,同时也在研究如何正确地添加代码到这里的帖子中!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多