エンティティ ビューのカスタマイズ

 

公開日: 2016年11月

対象: Dynamics CRM 2015

エンティティ ビューは、特定のフィルターを使用することによってデータを取得する特殊な保存済みクエリです。 このビューには、アプリケーションでのビュー内のデータの表示方法に関する情報も含まれます。 エンティティ ビューは、プログラム的に作成できる SavedQuery レコードです。 また、XML として定義して、アンマネージド ソリューションを使用して Microsoft Dynamics 365 にインポートすることもできます。

エンティティ ビューは UserQueryとは異なります。 ユーザー クエリ (アプリケーションでは保存されているビューと呼ばれる) は、個々のユーザーによって所有され、他のユーザーに割り当てたり、他のユーザーと共有することができます。また、クエリのアクセス特権に応じて、他のユーザーがクエリを表示することもできます。 これは、頻繁に使用される、複数のエンティティの種類にまたがるクエリや、集計を実行するクエリに適しています。詳細:UserQuery (保存されているビュー) エンティティ

このトピックの内容

ビューの種類

タスクの表示

  • ビューの作成

  • ビューの更新

  • ビューの削除

  • ビューの取得

  • ビューの非アクティブ化

  • フィルター条件の編集または並べ替えの構成

  • 列の編集

  • 既定として設定

ビューの種類

次の表には、カスタマイズがサポートされている 5 種類のビューが示されています。 ビューの種類コードは、SavedQuery.QueryType 属性に保存されます。 このエンティティは、Microsoft Office Outlook フィルターおよびテンプレートの保存にも使用されているため、QueryType 属性に対してこの一覧に記載されていない有効な値が他にもあります。 詳細については、「オフラインと Outlook のフィルターおよびテンプレート」を参照してください。

特定のエンティティに対してビューが定義されている場合、SavedQuery.ReturnedTypeCode 属性はエンティティの論理名を返します。

ビューの種類

種類コード

説明

パブリック

0

  • 出現回数: 複数

  • アクション: 作成、更新、削除

  • コメント:SavedQuery.IsDefaultを true に設定することによって、これらのビューの 1 つを既定の共有ビューとして設定できます。

高度な検索​​

1

  • 出現回数: 1

  • アクション: 更新のみ。

  • コメント: 既定では、このビューは結果が [高度な検索] に表示されるときに表示されます。

関連

2

  • 出現回数: 1

  • アクション: 更新のみ。

  • コメント: 既定では、このビューは関連するレコードのグリッドがレコードのナビゲーション ウィンドウに表示されるときに表示されます。

簡易検索

4

  • 出現回数: 1

  • アクション: 更新のみ。

  • コメント:このビューは、ユーザーがこのリストビューで検索フィールドを使用してレコードを検索するときに、検索される列を定義します。

検索

64

  • 出現回数: 1

  • アクション: 更新のみ。

  • コメント:これは、検索フィールドに他のビューが構成されていないときにレコードを検索するために使用される既定のビューです。

タスクの表示

ビューは SavedQuery レコードであるため、ビューの作成、更新、取得、削除、および非アクティブ化の操作を実行できます。 フィルター条件の編集や並べ替えの構成の他にも、列の編集やビューを既定のビューとして設定するなどの操作を実行できます。

ビューの作成

共有ビューを作成するには、次のプロパティを指定します。

  • SavedQuery.Name: 保存済みクエリの一意の識別子。

  • SavedQuery.ReturnedTypeCode: エンティティの論理名に一致します。

  • SavedQuery.FetchXml: 「FetchXML の使用によるクエリの作成」を参照してください。

  • SavedQuery.LayoutXml: 有効な要素については、「<layoutxml> (SavedQuery)」を参照してください。

  • SavedQuery.QueryType: 常にゼロ (0) である必要があります。

次のサンプルでは、営業案件エンティティの新しい共有ビューを作成します。


                    System.String layoutXml =
@"<grid name='resultset' object='3' jump='name' select='1' 
    preview='1' icon='1'>
    <row name='result' id='opportunityid'>
    <cell name='name' width='150' /> 
    <cell name='customerid' width='150' /> 
    <cell name='estimatedclosedate' width='150' /> 
    <cell name='estimatedvalue' width='150' /> 
    <cell name='closeprobability' width='150' /> 
    <cell name='opportunityratingcode' width='150' /> 
    <cell name='opportunitycustomeridcontactcontactid.emailaddress1' 
        width='150' disableSorting='1' /> 
    </row>
</grid>";

                    System.String fetchXml =
                    @"<fetch version='1.0' output-format='xml-platform' 
    mapping='logical' distinct='false'>
    <entity name='opportunity'>
    <order attribute='estimatedvalue' descending='false' /> 
    <filter type='and'>
        <condition attribute='statecode' operator='eq' 
        value='0' /> 
    </filter>
    <attribute name='name' /> 
    <attribute name='estimatedvalue' /> 
    <attribute name='estimatedclosedate' /> 
    <attribute name='customerid' /> 
    <attribute name='opportunityratingcode' /> 
    <attribute name='closeprobability' /> 
    <link-entity alias='opportunitycustomeridcontactcontactid' 
        name='contact' from='contactid' to='customerid' 
        link-type='outer' visible='false'>
        <attribute name='emailaddress1' /> 
    </link-entity>
    <attribute name='opportunityid' /> 
    </entity>
</fetch>";

                    SavedQuery sq = new SavedQuery
                    {
                        Name = "A New Custom Public View",
                        Description = "A Saved Query created in code",
                        ReturnedTypeCode = "opportunity",
                        FetchXml = fetchXml,
                        LayoutXml = layoutXml,
                        QueryType = 0
                    };

                    _customViewId = _serviceProxy.Create(sq);
                    Console.WriteLine("A new view with the name {0} was created.", sq.Name);

ビューの更新

SavedQuery.IsCustomizable マネージド プロパティによってビューを更新できる場合、IOrganizationService.Update メソッドまたは UpdateRequest メッセージを使用してビューを更新できます。

ビューの削除

保存済みクエリの削除は、自分で作成したもののみについて行ってください。 ソリューション コンポーネントまたはアプリケーションの一部が、特定の保存済みクエリに依存している場合があります。 アプリケーションに表示する必要がないクエリがある場合は、非アクティブ化する必要があります。

ビューの取得

保存済みクエリ レコードを取得するには、RetrieveMultipleRequest または IOrganizationService.RetrieveMultiple を使用します。

次のサンプルでは、営業案件エンティティのすべての共有ビューを取得します。


        QueryExpression mySavedQuery = new QueryExpression
        {
            ColumnSet = new ColumnSet("savedqueryid", "name", "querytype", "isdefault", "returnedtypecode", "isquickfindquery"),
            EntityName = SavedQuery.EntityLogicalName,
            Criteria = new FilterExpression
            {
                Conditions =
{
    new ConditionExpression
    {
        AttributeName = "querytype",
        Operator = ConditionOperator.Equal,
        Values = {0}
    },
    new ConditionExpression
    {
        AttributeName = "returnedtypecode",
        Operator = ConditionOperator.Equal,
        Values = {Opportunity.EntityTypeCode}
    }
}
            }
        };
        RetrieveMultipleRequest retrieveSavedQueriesRequest = new RetrieveMultipleRequest { Query = mySavedQuery };

        RetrieveMultipleResponse retrieveSavedQueriesResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveSavedQueriesRequest);

        DataCollection<Entity> savedQueries = retrieveSavedQueriesResponse.EntityCollection.Entities;

        //Display the Retrieved views
        foreach (Entity ent in savedQueries)
        {
            SavedQuery rsq = (SavedQuery)ent;
            Console.WriteLine("{0} : {1} : {2} : {3} : {4} : {5},", rsq.SavedQueryId, rsq.Name, rsq.QueryType, rsq.IsDefault, rsq.ReturnedTypeCode, rsq.IsQuickFindQuery);
        }

ビューの非アクティブ化

アプリケーションに表示する必要がない共有ビューは、非アクティブ化できます。 既定のビューとして設定されている共有ビューは、非アクティブ化できません。 次のサンプルでは、営業案件エンティティの [現在の会計年度中にクローズされた営業案件] ビューを非アクティブ化します。


System.String SavedQueryName = "Closed Opportunities in Current Fiscal Year";
QueryExpression ClosedOpportunitiesViewQuery = new QueryExpression
{
    ColumnSet = new ColumnSet("savedqueryid", "statecode", "statuscode"),
    EntityName = SavedQuery.EntityLogicalName,
    Criteria = new FilterExpression
    {
        Conditions =
        {
            new ConditionExpression
            {
                AttributeName = "querytype",
                Operator = ConditionOperator.Equal,
                Values = {0}
            },
            new ConditionExpression
            {
                AttributeName = "returnedtypecode",
                Operator = ConditionOperator.Equal,
                Values = {Opportunity.EntityTypeCode}
            },
                            new ConditionExpression
            {
                AttributeName = "name",
                Operator = ConditionOperator.Equal,
                Values = {SavedQueryName}
            }
        }
    }
};

RetrieveMultipleRequest retrieveOpportuntiesViewRequest = new RetrieveMultipleRequest { Query = ClosedOpportunitiesViewQuery };

RetrieveMultipleResponse retrieveOpportuntiesViewResponse = (RetrieveMultipleResponse)_serviceProxy.Execute(retrieveOpportuntiesViewRequest);

SavedQuery OpportunityView = (SavedQuery)retrieveOpportuntiesViewResponse.EntityCollection.Entities[0];
_viewOriginalState = (SavedQueryState)OpportunityView.StateCode;
_viewOriginalStatus = OpportunityView.StatusCode;


SetStateRequest ssreq = new SetStateRequest
{
    EntityMoniker = new EntityReference(SavedQuery.EntityLogicalName, (Guid)OpportunityView.SavedQueryId),
    State = new OptionSetValue((int)SavedQueryState.Inactive),
    Status = new OptionSetValue(2)
};
_serviceProxy.Execute(ssreq);

フィルター条件の編集または並べ替えの構成

フィルターの編集、またはデータの並べ替え方法の編集を行うには、SavedQuery.FetchXml 属性を設定する必要があります。 詳細については、「FetchXML を使用したクエリの構築」を参照してください。

ヒント

FetchXML に慣れていない場合は、メッセージ QueryExpressionToFetchXmlRequest および FetchXmlToQueryExpressionRequest を使用して、QueryExpression と FetchXML の間で変換できます。

列の編集

ビューに表示する列は、エンティティまたは関連するエンティティから取得できます。 列を指定する方法については、<layoutxml> (SavedQuery) を参照してください。

既定として設定

既定のビューとして設定できるのは、アクティブな共有ビューが 1 つだけです。 ビューを既定のビューにするには、IsDefault プロパティを true に設定します。

関連項目

サンプル: ビューの操作
SavedQuery (ビュー) エンティティのメッセージとメソッド
Saved query XML reference
FetchXML を使用したクエリの構築
メタデータ モデルの拡張
エンティティ フォームのカスタマイズ
グローバル オプション セットのカスタマイズ
Microsoft Dynamics CRM 2015 用カスタマイズの開発者ガイド

© 2017 Microsoft. All rights reserved. 著作権