Del via


ASP.NET-webformularer og databinding

 

Udgivet: november 2016

Gælder for: Dynamics CRM 2015

En af de mest populære webprogrammeringsteknologier er ASP.NET-webformularer, som binder data til kontrolelementer. Udviklerudvidelser for Microsoft Dynamics CRM 2015 har en række mekanismer, der gør det nemt at opbygge en ASP.NET-webformular, som binder til Microsoft Dynamics 365-data.

Dette emne indeholder

Brug CrmService-konteksten og LinqDataSource-kontrolelementet

Brug CrmDataSource-kontrolelement og FetchXML

Brug kontrolelementet CrmMetadataDataSource

Bruge databinding af bagvedliggende kode

Brug gemte forespørgsler i en portal

Brug CrmService-konteksten og LinqDataSource-kontrolelementet

Den anbefalede praksis for brug af Udviklerudvidelser for Microsoft Dynamics CRM 2015 er at køre CrmSvcUtil.exe-kodeudviklingsværktøjerne med udvidelsen Microsoft.Xrm.Client.CodeGeneration til at oprette den tjenestekontekst og de objektklasser til dataoverførsel, der svarer til dit Microsoft Dynamics 365-objektmodel. Tjenesten kontekstklasse omfatter en IQueryable-grænseflade for hvert Dynamics 365-objekt i din løsning. Tjenestens kontekstklasse kan nemt bruges sammen med kontrolelementet ASP.NETLinqDataSource for at lette deklarativ databinding, som ikke behøver nogen bagvedliggende kode. Du angiver attributten ContextTypeName for kontrolelementet LinqDataSource til typenavn for tjenestekonteksten og indstille attributten TableName til egenskabsnavnet på det objekt, du vil forespørge. Når Microsoft Dynamics 365-data er bundet til datakildekontrolelementet, kan du bruge alle databundne ASP.NET-kontrolelementer til at udtrække og få vist data, herunder gentagelser og GridView-kontrolelementet.

Følgende kode bruger et LinqDataSource-kontrolelementet til at binde den til Dynamics 365-kontakter og vise dem med et GridView. Samme eksempel kan ses i Gennemgang: Opbygge et webprogram, som opretter forbindelse til Microsoft Dynamics CRM 2015 ved hjælp af udviklerudvidelser.

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

Det viser følgende resultater i HTML-format.

HTML-resultater

Brug CrmDataSource-kontrolelement og FetchXML

Hvis du ikke vil bruge værktøjet CrmSvcUtil.exe til at generere en domænekontekst og et dataoverførselsobjekt, kan du bruge Microsoft.Xrm.Client.CrmOrganizationServiceContext.

I følgende eksempel bruges FetchXml til at forespørge Microsoft Dynamics 365 og CrmDataSource-kontrolelementet, så det bindes til Dynamics 365-data. Resultaterne vises i et GridView-kontrolelement. Bemærk, at DataItem i gitteret er af typen Entity. Hvis du vil binde til kolonner i resultaterne, kan du enten fastgøre Container.DataItem til en Entity-klasse, eller du kan binde til egenskaberne i standardindekseringen vha. 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>

Det viser følgende resultater i HTML-format.

HTML-resultater

Brug kontrolelementet CrmMetadataDataSource

Kontrolelementet CrmMetadataDataSource gør det muligt for databinding til Microsoft Dynamics 365-metadata. Det mest nyttige formål er at binde en rulleliste til en grupperet Dynamics 365-indstilling, som du bruger i en formular, der indsamler data til at blive gemt i Dynamics 365.

Følgende eksempel demonstrerer brugen af kontrolelementet CrmMetadataDataSource til at binde til tre separate grupperede indstillinger i objektet 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" />

Det viser følgende resultater i HTML-format.

HTML-resultater

Bruge databinding af bagvedliggende kode

Ovenstående eksempler bruger specifikke datakildeobjekter, der implementerer deklarativ databinding. Klassen XrmServiceContext kan også bruges med databinding vha. bagvedliggende kodeteknikker. Den tjenestekontekst, der genereres af værktøjet CrmSvcUtil.exe (med udvidelsen Microsoft.Xrm.Client.CodeGeneration), er IQueryable-egenskaber for alle Dynamics 365 objekter. Du kan skrive .NET-sprogintegreret forespørgsel (LINQ)-standardforespørgsler eller bruge udtryk med disse egenskaber og binde dem direkte til din gentagelser eller DataGrid-kontrolelementer.

Flere oplysninger:Gennemgang: Opbygge et webprogram, som opretter forbindelse til Microsoft Dynamics CRM 2015 ved hjælp af udviklerudvidelser

Brug gemte forespørgsler i en portal

Microsoft Dynamics 365 kan gøre det muligt for kunden at gemme en forespørgsel eller en visning til senere hentning. Visningen har kolonnerækkefølge og -definitioner, sorteringsrækkefølge og filterindstillinger. Det er en praktisk metode til at gøre det muligt for brugerne at konfigurere en visning i Dynamics 365, og en udvikler kan derefter bruge kontrolelementet SavedQueryDataSource til at binde til, få vist og bruge et GridView-kontrolelement med egenskaben AutoGenerateColumns aktiveret. Det giver mulighed for en udvikler at placere en Dynamics 365-visning direkte på en webside og få visningsindholdet administreret i Microsoft Dynamics 365. Professionelle brugere kan derefter ændre indholdet af visningen uden at skulle kontakte en udvikler for at ændre en webside og forfremme en ny version af webstedet på produktionsserveren.

Du kan få vist et eksempel på dette, samt et eksempel på, hvordan du opretter en dataindtastningsformular fra en gemt forespørgsel vha. kontrolelementet CrmEntityFormView, i Gennemgang: Opbygge et webprogram, som opretter forbindelse til Microsoft Dynamics CRM 2015 ved hjælp af udviklerudvidelser.

Se også

Vejledning til portaludvikling til Microsoft Dynamics CRM 2015
Forberede portaludvikling (Dynamics CRM 2015)
Administrere portalindhold (Dynamics CRM 2015)
Portalgodkendelse (Dynamics CRM 2015)
Bruge værktøjet til kopiering af websted (Dynamics CRM 2015)
Portalgennemgange til Dynamics CRM 2015

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret