Compartir a través de


Formularios web y enlace de datos ASP.NET

 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

Una de las tecnologías más populares de programación web es la de los formularios web de ASP.NET, que enlazan datos a los controles. Las extensiones de desarrollador de Microsoft Dynamics CRM 2015 tienen varios mecanismos que facilitan la creación de un formulario web de ASP.NET que se enlaza a los datos de Microsoft Dynamics 365.

En este tema

Uso del contexto CrmService y el control LinqDataSource

Uso del control CrmDataSource y FetchXML

Uso del control CrmMetadataDataSource

Uso de enlace de datos con código subyacente

Uso de consultas guardadas en un portal

Uso del contexto CrmService y el control LinqDataSource

La práctica recomendada para usar las extensiones de desarrollador para Microsoft Dynamics CRM 2015 consiste en ejecutar la herramienta de generación de códigos CrmSvcUtil.exe con la extensión Microsoft.Xrm.Client.CodeGeneration, para generar las clases de objeto de contexto de servicio y transferencia de datos que coincidan con el modelo de entidad de Microsoft Dynamics 365. La clase de contexto de servicio incluye una interfaz IQueryable para cada entidad de Dynamics 365 de la solución. La clase de contexto servicio se puede usar de manera muy sencilla con el control de ASP.NETLinqDataSource para facilitar el enlace de datos declarativo que no necesita ningún código subyacente. Establezca el atributo ContextTypeName del control LinqDataSource en el nombre de tipo del contexto del servicio y establezca el atributo TableName en el nombre de la propiedad de la entidad que desea consultar. Una vez que los datos de Microsoft Dynamics 365 están enlazados al control del origen de datos, puede utilizar cualquier control enlazado a datos de ASP.NET para extraer y mostrar los datos, incluidos los de repetición y el control de GridView.

El siguiente código usa un control LinqDataSource para enlazarse a los contactos de Dynamics 365 y mostrarlos con una GridView. Este mismo ejemplo se puede ver en Tutorial: Crear una aplicación web conectada a Microsoft Dynamics CRM 2015 mediante extensiones para desarrolladores.

<?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>

Esto muestra los siguientes resultados en HTML.

Resultados HTML

Uso del control CrmDataSource y FetchXML

Si no desea usar la herramienta CrmSvcUtil.exe para generar un objeto de contexto de dominio y transferencia de datos, puede usar Microsoft.Xrm.Client.CrmOrganizationServiceContext.

El siguiente ejemplo usa FetchXml para consultar Microsoft Dynamics 365 y el control CrmDataSource para enlazarse a los datos de Dynamics 365. Los resultados se muestran en un control de GridView. Tenga en cuenta que DataItem en la vista de cuadrícula es del tipo Entity. Para enlazar a las columnas en los resultados, puede convertir Container.DataItem a una clase Entity o puede enlazar a las propiedades del indizador predeterminado con 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>

Esto muestra los siguientes resultados en HTML.

Resultados HTML

Uso del control CrmMetadataDataSource

El control CrmMetadataDataSource admite el enlace de datos a los metadatos de Microsoft Dynamics 365. El propósito más útil es el de enlazar una lista desplegable a un conjunto de opciones de Dynamics 365 que utiliza en un formulario de datos que recopila datos para almacenar en Dynamics 365.

El siguiente ejemplo muestra cómo usar el control CrmMetadataDataSource para enlazar a tres conjuntos de opciones independientes en la entidad case (incident) de Dynamics 365.

<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" />

Esto muestra los siguientes resultados en HTML.

Resultados HTML

Uso de enlace de datos con código subyacente

Los ejemplos anteriores utilizan controles específicos del origen de datos que implementan el enlace de datos declarativo. También se puede usar la clase XrmServiceContext con técnicas de enlace de datos que usan código subyacente. El contexto de servicio que se genera con la herramienta CrmSvcUtil.exe (con la extensión Microsoft.Xrm.Client.CodeGeneration) tiene propiedades IQueryable para todas las entidades de Dynamics 365. Puede escribir consultas Consulta integrada del lenguaje .NET (LINQ) estándares o usar expresiones con estas propiedades y enlazarlas directamente a sus controles de repetición o de DataGrid.

Más información:Tutorial: Crear una aplicación web conectada a Microsoft Dynamics CRM 2015 mediante extensiones para desarrolladores

Uso de consultas guardadas en un portal

Microsoft Dynamics 365 tiene la capacidad de permitir que el cliente guarde una consulta o una vista para su recuperación posterior. La vista tiene orden y definiciones de las columnas, criterio de ordenación y opciones de filtro. Una técnica conveniente consiste en permitir que los usuarios configuren una vista en Dynamics 365 y que, posteriormente, un desarrollador use el control SavedQueryDataSource para crear un enlace a esa vista y usar un control GridView con la propiedad AutoGenerateColumns activada. Esto permite que un desarrollador coloque una vista de Dynamics 365 directamente en una página web y permita administrar el contenido de la vista en Microsoft Dynamics 365. De este modo, los usuarios profesionales pueden cambiar el contenido de la vista sin tener que trabajar con un desarrollador para realizar un cambio de página web y promover una nueva versión del sitio web al servidor de producción.

Para ver un ejemplo de lo anterior, así como un ejemplo de cómo generar un formulario de entrada de datos de una consulta guardada con el control CrmEntityFormView, consulte Tutorial: Crear una aplicación web conectada a Microsoft Dynamics CRM 2015 mediante extensiones para desarrolladores.

Ver también

Manual de desarrollador de portal para Microsoft Dynamics CRM 2015
Prepararse para el desarrollo de portal (Dynamics CRM 2015)
Administrar contenido de portal (Dynamics CRM 2015)
Autenticación de portal (Dynamics CRM 2015)
Usar la herramienta de copia del sitio web (Dynamics CRM 2015)
Tutoriales de portal para Dynamics CRM 2015

© 2017 Microsoft. Todos los derechos reservados. Copyright