Dynamics CRM 2016 Online - 使用对话框后刷新记录
Dynamics CRM 2016 Online - Refresh record after using dialog
我的功能区上有一个自定义按钮,可以触发一个对话框。这是我放在一起的变通办法资格解决方案的一部分。
Account/Contact/Opportunity 的创建和给定的选择工作正常,以及将潜在客户的状态更改为合格。问题是,当用户完成对话框并关闭它时,他们仍在查看原始状态的潜在客户。
如何强制刷新表单以显示其新状态?
我在网上看到了一个 Javascript 解决方案 (codeplex),Process.js - callDialog() 看起来很流行,但它不想像创建者在我的版本中描述的那样工作CRM - 总是收到无效的 URL 错误消息,它会在加载表单时以及使用自定义按钮时触发。
有没有人遇到过这样的需求,你们是怎么解决的?
谢谢
编辑:这是我目前在功能区按钮上使用的 JS。我在哪里放置我的刷新调用和 what/how 我调用关闭对话框时正在使用的事件。
我尝试在此代码的底部添加一个刷新调用,但它是在一开始打开对话框时调用的,这没有多大用处,因为我想看到的更改已应用于整个对话框本身。
谢谢
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));
}
}
})();
查看 Xrm.Page.data (client-side reference),你会想打电话给 Xrm.Page.data.refresh()
。
根据您启动对话的方式,假设您的对话是托管在 CRM 中的 Web 资源,该对话可以返回到它启动的表单并调用刷新,或者可能会使用回调。
编辑(根据您发布的代码): 如果函数的第 5 个参数 openStdDlgWithCallback
是您想要传递的对话框关闭时的回调Xrm.Page.data.refresh
之类的函数或将您的调用包装在函数 function(){Xrm.Page.data.refresh()}
中。目前您的代码正在立即执行该功能,这就是您立即看到刷新的原因。
使用您可以订阅一个在对话框关闭后运行的回调函数。然后,您可以在回调函数中使用 Xrm.Page.data.refresh()
。
我的功能区上有一个自定义按钮,可以触发一个对话框。这是我放在一起的变通办法资格解决方案的一部分。
Account/Contact/Opportunity 的创建和给定的选择工作正常,以及将潜在客户的状态更改为合格。问题是,当用户完成对话框并关闭它时,他们仍在查看原始状态的潜在客户。
如何强制刷新表单以显示其新状态?
我在网上看到了一个 Javascript 解决方案 (codeplex),Process.js - callDialog() 看起来很流行,但它不想像创建者在我的版本中描述的那样工作CRM - 总是收到无效的 URL 错误消息,它会在加载表单时以及使用自定义按钮时触发。
有没有人遇到过这样的需求,你们是怎么解决的?
谢谢
编辑:这是我目前在功能区按钮上使用的 JS。我在哪里放置我的刷新调用和 what/how 我调用关闭对话框时正在使用的事件。 我尝试在此代码的底部添加一个刷新调用,但它是在一开始打开对话框时调用的,这没有多大用处,因为我想看到的更改已应用于整个对话框本身。 谢谢
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));
}
}
})();
查看 Xrm.Page.data (client-side reference),你会想打电话给 Xrm.Page.data.refresh()
。
根据您启动对话的方式,假设您的对话是托管在 CRM 中的 Web 资源,该对话可以返回到它启动的表单并调用刷新,或者可能会使用回调。
编辑(根据您发布的代码): 如果函数的第 5 个参数 openStdDlgWithCallback
是您想要传递的对话框关闭时的回调Xrm.Page.data.refresh
之类的函数或将您的调用包装在函数 function(){Xrm.Page.data.refresh()}
中。目前您的代码正在立即执行该功能,这就是您立即看到刷新的原因。
使用Xrm.Page.data.refresh()
。