Dynamics CRM 2016在线 - 使用对话框后刷新记录
我在我的功能区上有一个自定义按钮,可以启动对话框。这是我将放在一起的解决方案资格认证解决方案的一部分。Dynamics CRM 2016在线 - 使用对话框后刷新记录
创建帐户/联系人/机会和给出的选择正常工作,以及将潜在客户的状态更改为合格。问题是,当用户完成对话并关闭它时,他们仍然在查看处于其原始状态的Lead。
如何强制窗体刷新以显示其新状态?
我已经看到一个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));
}
}
})();
退房的Xrm.Page.data (client-side reference),你要打电话Xrm.Page.data.refresh()
。
根据您启动对话框的方式,并假设您的对话框是托管在CRM中的Web资源,对话框可以恢复为其启动的窗体并调用刷新,或者可能使用回调。
EDIT(根据您发布的代码):如果函数openStdDlgWithCallback
的第5个参数是当对话框关闭你要传递的功能像Xrm.Page.data.refresh
或包裹你的电话的功能function(){Xrm.Page.data.refresh()}
回调。目前您的代码正在执行该功能,这就是您马上看到刷新的原因。
使用openStdDlgWithCallback您可以订阅对话框关闭后运行的回调函数。您可以在回调函数中使用Xrm.Page.data.refresh()
。
这看起来确实会刷新,但它在对话框打开之前触发。如果我更改了一个字段,然后点击了自定义按钮,它会询问我是否想先保存更改 - 如果单击确定继续,则会刷新表单(恢复我的更改),然后打开对话框。我需要这个以相反的顺序发生! – alex13p
用更新的代码更新您的文章。 – dynamicallyCRM
确定完成了,同时还解决了如何正确添加代码到这里的帖子! – alex13p
嗨alex,你可以写为功能区按钮的JavaScript。你只需要使用javascript运行对话框并使用下面的代码来刷新表单'Xrm.Utility.openEntityForm(Xrm.Page.data.entity.getEntityName(),Xrm.Page.data.entity.getId());' – Nachiket