共用方式為


自訂實體檢視表

 

發行︰ 2016年11月

適用於: Dynamics CRM 2015

實體檢視表是特殊儲存的查詢,使用特定篩選來擷取資料。 它們也包含如何在應用程式中顯示檢視表資料的資訊。 實體檢視表是您可以透過程式設計方式建立的 SavedQuery 記錄。 您可以將其定義成 XML,然後利用未受管理解決方案匯入至 Microsoft Dynamics 365。

實體檢視表與 UserQuery 不同。 使用者查詢,在應用程式中稱為儲存的檢視表,是由個別使用者擁有,可以被指派及與其他使用者共用,以及根據查詢的存取權限,可供其他使用者檢視。 這適用於跨實體類型、經常使用的查詢以及執行彙總的查詢。其他資訊:UserQuery (已儲存的檢視表) 實體

本主題內容

檢視表類型

檢視工作

  • 建立檢視表

  • 更新檢視表

  • 刪除檢視表

  • 擷取檢視表

  • 停用檢視表

  • 編輯篩選準則或設定排序

  • 編輯欄

  • 設定為預設

檢視表類型

下表列出自訂支援的五種檢視表類型。 檢視表的類型代碼是儲存在 SavedQuery.QueryType 屬性中。 請注意,在這裡沒有列出 QueryType 屬性的其他有效值,因為此實體也用以儲存 Microsoft Office Outlook 篩選與範本。 如需詳細資訊,請參閱離線與 Outlook 篩選與範本

為特定實體定義檢視表時,SavedQuery.ReturnedTypeCode 屬性會傳回實體邏輯名稱。

檢視表類型

類型代碼

描述

公用

0

  • 發生次數:多

  • 動作:建立、更新、刪除

  • 註解:您可以將 SavedQuery.IsDefault 設定為 true,設定其中一個檢視表做為預設公用檢視表。

進階尋找​​

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 訊息來更新檢視表。

刪除檢視表

您只應刪除您所建立的已儲存查詢。 應用程式元件或解決方案一部分可能會依賴特定儲存的查詢。 如果您不要查詢顯示在應用程式中,您必須停用它們。

擷取檢視表

使用 RetrieveMultipleRequestIOrganizationService.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,下列訊息可用來在 QueryExpression 和 FetchXML 之間轉換:QueryExpressionToFetchXmlRequestFetchXmlToQueryExpressionRequest

編輯欄

要顯示在檢視表的欄可以從實體或相關實體取得。 如需如何指定要顯示之欄的其他資訊,請參閱 <layoutxml> (SavedQuery)

設定為預設

只有一個使用中公用檢視表才能設定為預設檢視表。 若要讓檢視成為預設檢視表,將 IsDefault 屬性設定為 true。

另請參閱

範例:使用檢視表
SavedQuery (檢視表) 實體訊息和方法
Saved query XML reference
使用 FetchXML 建立查詢
擴充中繼資料模型
自訂實體表單
自訂全域選項組
Microsoft Dynamics CRM 2015 開發人員自訂指南

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權