ASP.NET Web フォームとデータ バインド

 

公開日: 2016年11月

対象: Dynamics CRM 2015

最も一般的な web プログラミング テクノロジの 1 つに、コントロールにデータをバインドする ASP.NET web フォームがあります。 Developer Extensions for Microsoft Dynamics CRM 2015 には、Microsoft Dynamics 365 データにバインドされた ASP.NET web フォームを簡単に構築するためのさまざまなメカニズムが用意されています。

このトピックの内容

CrmService コンテキストと LinqDataSource コントロールの使用

CrmDataSource コントロールと FetchXML の使用

CrmMetadataDataSource コントロールの使用

分離コード データ バインドの使用

ポータルに保存されたクエリの使用

CrmService コンテキストと LinqDataSource コントロールの使用

Developer Extensions for 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 を使用してそれらを表示します。 これと同じ例が、「チュートリアル: Developer Extensions を使用して 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 で表示されます。

HTML の結果

CrmDataSource コントロールと FetchXML の使用

ドメイン コンテキストとデータ転送オブジェクトの生成に CrmSvcUtil.exe ツールを使用したくない場合は、Microsoft.Xrm.Client.CrmOrganizationServiceContext を使用できます。

次の例では、FetchXml を使用して Microsoft Dynamics 365 のクエリを実行し、CrmDataSource コントロールを使用して Dynamics 365 データにバインドします。 結果は GridView コントロールに表示されます。 グリッド ビューの DataItemEntity 型です。 結果内の列にバインドするには、Container.DataItemEntity クラスにキャストするか、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 で表示されます。

HTML の結果

CrmMetadataDataSource コントロールの使用

CrmMetadataDataSource コントロールは、Microsoft Dynamics 365 メタデータへのデータ バインドを可能にします。 最も便利な用途は、ドロップダウン リストを Dynamics 365 オプション セットにバインドして、Dynamics 365 に格納するデータを収集するデータ フォームに使用することです。

次の例は、CrmMetadataDataSource コントロールを使用して、Dynamics 365case (incident) エンティティ内の 3 つの個別のオプション セットにバインドする方法を示しています。

<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 で表示されます。

HTML の結果

分離コード データ バインドの使用

前の例では、宣言型データ バインドを実装する特定のデータ ソース コントロールを使用しました。 分離コード技術を使用したデータ バインドには、XrmServiceContext クラスも使用できます。CrmSvcUtil.exe ツールで (Microsoft.Xrm.Client.CodeGeneration 拡張機能を使用して) 生成されるサービス コンテキストには、すべての Dynamics 365 エンティティの IQueryable プロパティが含まれています。 標準の .NET 統合言語クエリ (LINQ) クエリを作成するか、これらのプロパティに式を使用して、それをリピーターまたは DataGrid コントロールに直接バインドすることができます。

詳細:チュートリアル: Developer Extensions を使用して Microsoft Dynamics CRM 2015 に接続された Web アプリケーションの構築

ポータルに保存されたクエリの使用

Microsoft Dynamics 365 には、顧客がクエリまたはビューを保存して後で取得できる機能があります。 ビューには、列の順序と定義、並べ替え順序、およびフィルターのオプションがあります。 この方法は、ユーザーが Dynamics 365 でビューを構成した後、開発者が SavedQueryDataSource コントロールを使用してそのビューにバインドし、GridView プロパティを有効にして AutoGenerateColumns コントロールを使用できるようにする場合に便利です。 これにより開発者は、Dynamics 365 ビューを webページに直接ドロップし、ビューのコンテンツが Microsoft Dynamics 365 で管理されるようにできます。 ビジネス ユーザーは、開発者を介さずにビューのコンテンツを変更して、webページの変更を行い、新しいバージョンの webサイトを運用サーバーに配置することができます。

この方法の例と、CrmEntityFormView コントロールを使用して保存済みクエリからデータ入力フォームを生成する方法の例については、「チュートリアル: Developer Extensions を使用して Microsoft Dynamics CRM 2015 に接続された Web アプリケーションの構築」を参照してください。

関連項目

Microsoft Dynamics CRM 2015 用ポータル開発者ガイド
ポータル開発の準備 (Dynamics CRM 2015)
ポータル コンテンツの管理 (Dynamics CRM 2015)
ポータル認証 (Dynamics CRM 2015)
Web サイト コピー ツールの使用 (Dynamics CRM 2015)
Dynamics CRM 2015 のポータルのチュートリアル

© 2017 Microsoft. All rights reserved. 著作権