发布日期: 2016年11月
适用于: Dynamics CRM 2015
最常用的一种 Web 编程技术是 ASP.NET Web 窗体,它将数据与控件绑定。Microsoft Dynamics CRM 2015 开发人员扩展具有许多机制,从而可以轻松构建绑定到 Microsoft Dynamics 365 数据的 ASP.NET Web 窗体。
本主题内容
使用 CrmService 上下文和 LinqDataSource 控件
使用 CrmDataSource 控件和 FetchXML
使用 CrmMetadataDataSource 控制
使用代码隐藏数据绑定
在门户中使用已保存查询
使用 CrmService 上下文和 LinqDataSource 控件
使用 Microsoft Dynamics CRM 2015 开发人员扩展的建议做法是通过 Microsoft.Xrm.Client.CodeGeneration 扩展运行 CrmSvcUtil.exe 代码生成工具,以生成与您的 Microsoft Dynamics 365 实体对象匹配的服务上下文和数据传输对象类。 对于您的解决方案中的每个 Dynamics 365 实体,服务上下文类都包括一个 IQueryable 接口。 服务上下文类可轻松用于 ASP.NETLinqDataSource 控件,以便于实现不需要任何隐藏代码的声明性数据绑定。 您将 ContextTypeName 控件的 LinqDataSource 属性设置为服务上下文的类型名称,将 TableName 属性设置为要查询的实体的属性名称。 将 Microsoft Dynamics 365 数据绑定到数据源控件后,可以使用任何 ASP.NET 数据绑定控件来提取和显示包括中继器和 GridView 控件的数据。
以下代码使用 LinqDataSource 控件绑定到 Dynamics 365 联系人并通过 GridView 显示这些联系人。 可在演练:使用开发人员扩展构建连接到 Microsoft Dynamics CRM 2015 的 Web 应用程序中看到同一示例。
<?xml version="1.0" encoding="utf-8"?>
<!--This example lists all contacts from the Microsoft Dynamics CRM system. -->
<asp:LinqDataSource ID="Contacts" ContextTypeName="Xrm.XrmServiceContext" TableName="ContactSet" runat="server" />
<asp:GridView DataSourceID="Contacts" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField HeaderText="First Name">
<ItemTemplate>
<asp:Label Text=''
<%# Eval("firstname")%>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Name">
<ItemTemplate>
<asp:Label Text=''
<%# Eval("lastname")%>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="City">
<ItemTemplate>
<asp:Label Text=''
<%#Eval("address1_city") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这将以 HTML 格式显示以下结果。
.jpeg)
使用 CrmDataSource 控件和 FetchXML
如果不希望使用 CrmSvcUtil.exe 工具生成域上下文和数据传输对象,可以使用 Microsoft.Xrm.Client.CrmOrganizationServiceContext。
以下示例使用 FetchXml 查询 Microsoft Dynamics 365 和 CrmDataSource 控件来绑定到 Dynamics 365 数据。 结果将显示在 GridView 控件中。 请注意,网格视图中 DataItem 的类型为 Entity。 要绑定到结果中的列,可以将 Container.DataItem 转换为 Entity 类,也可以使用 Eval("[attribute-logical-name]") 来绑定到默认索引器中的属性。
<crm:CrmDataSource ID="Contacts" runat="server">
<FetchXml>
<fetch>
<entity name="contact" />
</fetch>
</FetchXml>
</crm:CrmDataSource>
<asp:GridView DataSourceID="Contacts" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField HeaderText="Full Name">
<ItemTemplate>
<asp:Label Text=''
<%# Eval("[fullname]") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Created On">
<ItemTemplate>
<asp:Label Text=''
<%# Eval("[createdon]") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Last Modified">
<ItemTemplate>
<asp:Label Text=''
<%# Eval("[modifiedon]") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<crm:CrmDataSource ID="Contacts" runat="server">
<FetchXml>
<fetch>
<entity name="contact" />
</fetch>
</FetchXml>
</crm:CrmDataSource>
这将以 HTML 格式显示以下结果。
.jpeg)
使用 CrmMetadataDataSource 控制
CrmMetadataDataSource 控件允许数据绑定到 Microsoft Dynamics 365 元数据。 最有用的用途是将下拉列表绑定到您在数据窗体中使用的 Dynamics 365 选项集,该窗体将收集数据以存储在 Dynamics 365 中。
以下示例演示使用 CrmMetadataDataSource 控件来绑定到 Dynamics 365case (incident) 实体中的三个单独选项集。
<h2>Incident Picklists</h2>
<h3>Priority</h3>
<crm:CrmMetadataDataSource ID="PriorityCodes" runat="server"
EntityName="incident"
AttributeName="prioritycode" />
<asp:DropDownList runat="server"
DataSourceID="PriorityCodes"
DataTextField="OptionLabel"
DataValueField="OptionValue" />
<h3>Satisfaction Rating</h3>
<crm:CrmMetadataDataSource ID="SatisfactionCodes" runat="server"
EntityName="incident"
AttributeName="customersatisfactioncode" />
<asp:DropDownList runat="server"
DataSourceID="SatisfactionCodes"
DataTextField="OptionLabel"
DataValueField="OptionValue" />
这将以 HTML 格式显示以下结果。
.jpeg)
使用代码隐藏数据绑定
以上示例使用了实现声明性数据绑定的特定数据源控件。XrmServiceContext 类还可用于使用代码隐藏技术的数据绑定。 通过 CrmSvcUtil.exe 工具(使用 Microsoft.Xrm.Client.CodeGeneration 扩展)生成的服务上下文针对所有 Dynamics 365 实体具有 IQueryable 属性。 您可以编写标准 .NET 语言集成查询 (LINQ) 查询或使用具有这些属性的表达式并将它们直接绑定到中继器或 DataGrid 控件。
详细信息:演练:使用开发人员扩展构建连接到 Microsoft Dynamics CRM 2015 的 Web 应用程序
在门户中使用已保存查询
Microsoft Dynamics 365 允许客户保存查询或视图供以后检索。 视图具有列顺序和定义、排序顺序和筛选选项。 通过这一便利的技术,用户可以在 Dynamics 365 中配置视图,然后开发人员可以使用 SavedQueryDataSource 控件来绑定到该视图并使用 GridView 控件,同时启用 AutoGenerateColumns 属性。 这样,开发人员可以将 Dynamics 365 视图直接放入网页中,并使视图内容在 Microsoft Dynamics 365 中进行管理。 然后,业务用户可以更改视图的内容,而无需通过开发人员进行网页更改并将新版本的网站提升到生产服务器。
有关这方面的示例以及如何使用 CrmEntityFormView 控件根据已保存查询生成数据输入窗体的示例,请参阅演练:使用开发人员扩展构建连接到 Microsoft Dynamics CRM 2015 的 Web 应用程序。
另请参阅
Microsoft Dynamics CRM 2015 门户开发人员指南
准备进行门户开发 (Dynamics CRM 2015)
管理门户内容 (Dynamics CRM 2015)
门户身份验证 (Dynamics CRM 2015)
使用网站复制工具 (Dynamics CRM 2015)
Dynamics CRM 2015 的门户演练
© 2017 Microsoft。 保留所有权利。 版权