为复合属性编写脚本
发布日期: 2017年1月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online
添加到窗体的某些字段可以表示多个数据项。 这些复合属性在 Web 应用程序中显示时的行为与其他属性不同,您必须分别编写脚本才能正确使用它们。
本主题内容
复合属性
Web 应用程序中的复合属性
适用于平板电脑的 Dynamics 365 中的复合属性
减少区别
复合属性
下表列出复合属性:
实体 |
显示名称 |
逻辑名称 |
---|---|---|
Contact
|
全名 |
fullname |
地址 1 |
address1_composite |
|
地址 2 |
address2_composite |
|
Lead
|
全名 |
fullname |
地址 1 |
address1_composite |
|
地址 2 |
address2_composite |
|
User
|
全名 |
fullname |
地址 |
address1_composite |
|
其他地址 |
address2_composite |
|
Account
|
地址 1 |
address1_composite |
地址 2 |
address2_composite |
|
Quote
|
帐单寄往地址 |
billto_composite |
送货地址 |
shipto_composite |
|
Order
|
帐单寄往地址 |
billto_composite |
送货地址 |
shipto_composite |
|
Invoice
|
帐单寄往地址 |
billto_composite |
送货地址 |
shipto_composite |
Web 应用程序中的复合属性
当复合属性的字段添加到主窗体时,Web 应用程序将仅显示复合属性。 当某人编辑字段时,弹出项目会显示包含复合属性的个别属性。 尽管未显式添加到窗体编辑器中的窗体,但作为属性一部分的每个属性都可用于窗体。 虽然可以使用 getValue 读取复合值的值,但是不能使用 setValue 直接更改复合属性的值;必须设置复合属性引用的一个或多个属性。
可以访问浮出控件中显示名称的单个关系人控件。 这些控件使用下列命名约定:<composite control name>_compositionLinkControl_<constituent attribute name>。 要访问 address1_composite 控件中的 address_line1 控件,您可以使用:Xrm.Page.getControl("address1_composite_compositionLinkControl_address1_line1")。
适用于平板电脑的 Dynamics 365 中的复合属性
适用于平板电脑的 Microsoft Dynamics 365 使用用于具有复合属性的实体的相同窗体定义,但它分别解释它们。 如果在窗体定义中找到复合属性,它将在窗体的该部分中显示作为复合属性一部分的所有属性。 由于所有字段都可见,因此不需要弹出项目。 您可以编写访问每个单个属性的窗体的脚本,就像它们已分别添加到窗体一样。
但是,适用于平板电脑的 Dynamics 365 页中将不会提供实际复合控件。
减少区别
如果您要访问 Contact、Lead 或 User 实体的 fullname 字段,可以使用 **Xrm.Page.data.entity.**fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getPrimaryAttributeValue 方法轻松获取此属性的值,而无需直接引用它。 此方法适用于 Web 应用程序和 适用于平板电脑的 Dynamics 365。
如果您的代码需要读取某个地址复合属性的值,为了同时用于两个客户端,您需要使用 Xrm.Page.context.client.getClient 分隔代码,如下面的函数所示,该函数在主 Web 应用程序中或相同窗体的 适用于平板电脑的 Dynamics 365 版本中使用 **Xrm.Utility.**72a66f93-92df-42b9-a8fd-b6125c7fe83b#BKMK_alertDialog 显示格式化的地址。
function showAddressDialog() {
var address1_compositeValue;
if (Xrm.Page.context.client.getClient() != "Mobile") {
address1_compositeValue = Xrm.Page.getAttribute("address1_composite").getValue();
}
else {
var address1_line1 = Xrm.Page.getAttribute("address1_line1").getValue();
var address1_line2 = Xrm.Page.getAttribute("address1_line2").getValue();
var address1_line3 = Xrm.Page.getAttribute("address1_line3").getValue();
var address1_city = Xrm.Page.getAttribute("address1_city").getValue();
var address1_stateorprovince = Xrm.Page.getAttribute("address1_stateorprovince").getValue();
var address1_postalcode = Xrm.Page.getAttribute("address1_postalcode").getValue();
var address1_country = Xrm.Page.getAttribute("address1_country").getValue();
// Achieve equivalent formatting
//address1_line1
//address1_line2
//address1_line3
//address1_city, address1_stateorprovince address1_postalcode
//address1_country
var addressText = "";
if (address1_line1 != null) {
addressText += address1_line1 + "\n";
}
if (address1_line2 != null) {
addressText += address1_line2 + "\n";
}
if (address1_line3 != null) {
addressText += address1_line3 + "\n";
}
if (address1_city != null) {
addressText += address1_city + ", ";
}
if (address1_stateorprovince != null) {
addressText += address1_stateorprovince + " ";
}
if (address1_postalcode != null) {
addressText += address1_postalcode + "\n";
}
addressText += address1_country;
address1_compositeValue = addressText;
}
Xrm.Utility.alertDialog(address1_compositeValue);
}
另请参阅
为 Microsoft Dynamics 365 窗体编写代码
使用窗体和字段事件
使用 Xrm.Page 对象模型
编写和调试适用于手机和平板电脑的 Dynamics 365 的脚本
使用执行上下文和窗体事件管道
在窗体上使用 IFRAME 和 Web 资源控件
脚本即时引用的表单
客户端编程引用
Xrm.Page.data. 实体属性(客户端引用)
Microsoft Dynamics 365
© 2017 Microsoft。 保留所有权利。 版权