CRM - 从另一个表单中检索选定的选项集
CRM - Retrieve Selected Option Set From Another Form
在我的报价表单中,用户将在完成后输入 'potential customer' 我希望能够检索从帐户表单的选项集中选择的选项,并将文本放入文本中报价表中的字段。
到目前为止,我有以下 JS;
var entityLogicalName= "account";
var RetrieveAttributeName= "paymenttermscode";
SDK.MetaData.RetrieveEntityAsync(SDK.MetaData.EntityFilters.Attributes,entityLogicalName, null, false,
function (entityMetadata)
{
onSuccess(entityLogicalName, entityMetadata, RetrieveAttributeName);
},
onError);
function onSuccess(logicalName, entityMetadata, RetrieveAttributeName)
{
for(var i=0; i<entityMetadata.Attributes.length;i++)
{
var AttributeMetadata = entityMetadata.Attributes[i];
if (success) break;
if (AttributeMetadata.SchemaName.toLowerCase() ==RetrieveAttributeName.toLowerCase())
{
for (var o = 0; o<AttributeMetaData.OptionSet.Options.length; o++)
{
var option = AttributeMetadata.OptionSet.Options[o];
if(option.OptionMetadata!=null&&option.OptionMetadata.Label!=null)
{
Xrm.Page.getAttribute("new_paymentterms").setValue(option.OptionMetadata.Label.UserLocalizedLabel.Label);
break;
}
}
}
}
}
function onError(XmlHttpRequest,textStatus,errorThrown)
{
alert(errorThrown);
}
但是我不断收到一条错误消息,指出
无法获取 属性 未定义或空引用的 RetrieveEntityAsync
这是因为我正在尝试从另一个表单中检索数据吗?
有谁知道这个问题的解决方法,谢谢
更新
原来我使用的是 Internet Explorer SDK.Metadata.js 中的 XPathEvaluator 函数导致错误,因为它不再受支持
有人知道解决方法吗?
使用 XPathEvaluator 和 IE 特定的 XML 函数(如 selectSingleNode)的替代方法是使用 jQuery 的 XML 选择器,XrmServiceToolkit 使用它。请参阅下面的 link。
官方 SDK.Metadata.js 库中没有 RetrieveEntityAsync() 函数。你自己写的吗?或者从网上的某个地方获取该库?
无论哪种方式,只需调用标准的 SDK.Metadata.RetrieveEntity() 函数,它是异步的,并且在 IE 中工作得很好。
此外,如果您要全局声明 entityLogicalName 和 RetrieveAttributeName,则无需将它们传递给 onSucess 方法,它们在那里已经可用。
在我的报价表单中,用户将在完成后输入 'potential customer' 我希望能够检索从帐户表单的选项集中选择的选项,并将文本放入文本中报价表中的字段。
到目前为止,我有以下 JS;
var entityLogicalName= "account";
var RetrieveAttributeName= "paymenttermscode";
SDK.MetaData.RetrieveEntityAsync(SDK.MetaData.EntityFilters.Attributes,entityLogicalName, null, false,
function (entityMetadata)
{
onSuccess(entityLogicalName, entityMetadata, RetrieveAttributeName);
},
onError);
function onSuccess(logicalName, entityMetadata, RetrieveAttributeName)
{
for(var i=0; i<entityMetadata.Attributes.length;i++)
{
var AttributeMetadata = entityMetadata.Attributes[i];
if (success) break;
if (AttributeMetadata.SchemaName.toLowerCase() ==RetrieveAttributeName.toLowerCase())
{
for (var o = 0; o<AttributeMetaData.OptionSet.Options.length; o++)
{
var option = AttributeMetadata.OptionSet.Options[o];
if(option.OptionMetadata!=null&&option.OptionMetadata.Label!=null)
{
Xrm.Page.getAttribute("new_paymentterms").setValue(option.OptionMetadata.Label.UserLocalizedLabel.Label);
break;
}
}
}
}
}
function onError(XmlHttpRequest,textStatus,errorThrown)
{
alert(errorThrown);
}
但是我不断收到一条错误消息,指出
无法获取 属性 未定义或空引用的 RetrieveEntityAsync
这是因为我正在尝试从另一个表单中检索数据吗? 有谁知道这个问题的解决方法,谢谢
更新
原来我使用的是 Internet Explorer SDK.Metadata.js 中的 XPathEvaluator 函数导致错误,因为它不再受支持
有人知道解决方法吗?
使用 XPathEvaluator 和 IE 特定的 XML 函数(如 selectSingleNode)的替代方法是使用 jQuery 的 XML 选择器,XrmServiceToolkit 使用它。请参阅下面的 link。
官方 SDK.Metadata.js 库中没有 RetrieveEntityAsync() 函数。你自己写的吗?或者从网上的某个地方获取该库?
无论哪种方式,只需调用标准的 SDK.Metadata.RetrieveEntity() 函数,它是异步的,并且在 IE 中工作得很好。
此外,如果您要全局声明 entityLogicalName 和 RetrieveAttributeName,则无需将它们传递给 onSucess 方法,它们在那里已经可用。