情景:
第1步:我正在使用MS CRM 2011.I编写javascript函数获取字段值(电子邮件实体)并将该值设置为关于Field.It工作正常。
第2步:编写更新关于字段中的值的过程为clear.Because自动关联字段获取一些值。所以我需要在关于字段中将其更改为空。它正在工作细
第3步:现在我在onchange事件中调用了javascript函数。
问题:关注字段值在进程执行后获取清除。这意味着旧值替换和新值在关注字段中获取。它就像一个关于更改事件。旧值被替换作为一个空。
但功能不会触发。如果打开电子邮件表单并更改关于字段,它工作正常,这意味着Javascript可以工作。
摘要:当我从Process.But更改值时onchange事件没有调用。我尝试手动javascript工作正常。
如何解决这个问题。
**请参阅以下屏幕截图:
使用此Java脚本:
第1步编码 function TofieldValuetoOtherField() {
var lookup = new Array();
lookup = Xrm.Page.getAttribute("to").getValue();
if (lookup != null)
{
var name = lookup[0].name;
var id = lookup[0].id;
var entityType = lookup[0].entityType;
Xrm.Page.getAttribute("regardingobjectid").setValue([{ id: id, name: name, entityType: entityType }]);
//Xrm.Page.data.entity.save();
}}
像这样调用Onchange它没有被解雇。
答案 0 :(得分:6)
只有在使用Web界面执行操作(onload,onsave和onchange)时才会调用JavaScript代码。
如果使用工作流程(或插件)更改字段值,则不会执行附加的javascript,因为代码仅在浏览器窗口内执行。
答案 1 :(得分:0)
如果您使用CRM网络界面来创建电子邮件,那么您应该在OnLoad事件中将其全部绑定。 OnLoad调用OnCrmPageLoad函数(因为我们使用addOnChange方法执行它,所以删除OnChange调用)。
function OnCrmPageLoad() {
//Apply every time the To field changes
Xrm.Page.getAttribute("to").addOnChange(TofieldValuetoOtherField);
//Apply when the from loads
TofieldValuetoOtherField();
}
TofieldValuetoOtherField = function()
{
var lookup = Xrm.Page.getAttribute("to").getValue();
if (lookup)
{
var name = lookup[0].name;
var id = lookup[0].id;
var entityType = lookup[0].entityType;
Xrm.Page.getAttribute("regardingobjectid")
.setValue([{ id: id, name: name, entityType: entityType }]);
}
}
如果您需要在Web界面之外创建电子邮件时强制执行此操作,即Outlook或Web服务,那么您必须 使用插件覆盖关注字段(如上所述)