自訂實體檢視表
發行︰ 2016年11月
適用於: Dynamics CRM 2015
實體檢視表是特殊儲存的查詢,使用特定篩選來擷取資料。 它們也包含如何在應用程式中顯示檢視表資料的資訊。 實體檢視表是您可以透過程式設計方式建立的 SavedQuery 記錄。 您可以將其定義成 XML,然後利用未受管理解決方案匯入至 Microsoft Dynamics 365。
實體檢視表與 UserQuery 不同。 使用者查詢,在應用程式中稱為儲存的檢視表,是由個別使用者擁有,可以被指派及與其他使用者共用,以及根據查詢的存取權限,可供其他使用者檢視。 這適用於跨實體類型、經常使用的查詢以及執行彙總的查詢。其他資訊:UserQuery (已儲存的檢視表) 實體
本主題內容
檢視表類型
檢視工作
建立檢視表
更新檢視表
刪除檢視表
擷取檢視表
停用檢視表
編輯篩選準則或設定排序
編輯欄
設定為預設
檢視表類型
下表列出自訂支援的五種檢視表類型。 檢視表的類型代碼是儲存在 SavedQuery.QueryType 屬性中。 請注意,在這裡沒有列出 QueryType 屬性的其他有效值,因為此實體也用以儲存 Microsoft Office Outlook 篩選與範本。 如需詳細資訊,請參閱離線與 Outlook 篩選與範本。
為特定實體定義檢視表時,SavedQuery.ReturnedTypeCode 屬性會傳回實體邏輯名稱。
檢視表類型 |
類型代碼 |
描述 |
---|---|---|
公用 |
0 |
|
進階尋找 |
1 |
|
相關項目 |
2 |
|
快速尋找 |
4 |
|
查詢 |
64 |
|
檢視工作
因為檢視表是 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,下列訊息可用來在 QueryExpression 和 FetchXML 之間轉換:QueryExpressionToFetchXmlRequest 和 FetchXmlToQueryExpressionRequest。
編輯欄
要顯示在檢視表的欄可以從實體或相關實體取得。 如需如何指定要顯示之欄的其他資訊,請參閱 <layoutxml> (SavedQuery)。
設定為預設
只有一個使用中公用檢視表才能設定為預設檢視表。 若要讓檢視成為預設檢視表,將 IsDefault 屬性設定為 true。
另請參閱
範例:使用檢視表
SavedQuery (檢視表) 實體訊息和方法
Saved query XML reference
使用 FetchXML 建立查詢
擴充中繼資料模型
自訂實體表單
自訂全域選項組
Microsoft Dynamics CRM 2015 開發人員自訂指南
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權