自訂實體檢視表
發行︰ 2017年1月
適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
實體檢視表是特殊儲存的查詢,使用特定篩選來擷取資料。 它們也包含如何在應用程式中顯示檢視表資料的資訊。 實體檢視表是您可以透過程式設計方式建立的 SavedQuery 記錄。 您可以將其定義成 XML,然後利用未受管理解決方案匯入至 Microsoft Dynamics 365。
實體檢視表與 UserQuery 不同。 使用者查詢,在應用程式中稱為儲存的檢視表,是由個別使用者擁有,可以被指派及與其他使用者共用,以及根據查詢的存取權限,可供其他使用者檢視。 這適用於跨實體類型、經常使用的查詢以及執行彙總的查詢。其他資訊:UserQuery (已儲存的檢視表) 實體
您也可以使用 Dynamics 365 中的自訂工具自訂檢視表。其他資訊:TechNet:建立並編輯檢視表
本主題內容
檢視表類型
檢視工作
建立檢視表
更新檢視表
刪除檢視表
擷取檢視表
停用檢視表
編輯篩選準則或設定排序
編輯欄
為欄新增包含工具提示的自訂圖示
設定為預設
檢視表類型
下表列出自訂支援的五種檢視表類型。 檢視表的類型代碼是儲存在 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)。
為欄新增包含工具提示的自訂圖示
您可以新增含有工具提示的自訂圖示,根據欄的值在欄中顯示;您也可以指定翻譯的工具提示文字。 做法是新增自訂圖示做為 Dynamics 365 執行個體中的影像 Web 資源,然後使用 JavaScript Web 資源新增 JavaScript 程式碼,讓欄根據欄的值顯示圖示。
注意
此功能已在 Dynamics 365 (Online 和內部部署) 的 2016 年 12 月更新 中提供。 新增自訂圖示含工具提示,只有唯讀網格支援;可編輯的網格不支援此功能。 如需有關可編輯的網格的詳細資訊,請參閱在 Dynamics 365 中使用可編輯的網格。
兩個新屬性 imageproviderwebresource 和 imageproviderfunctionname 已新增至已儲存查詢的 layoutxml (請參閱<cell> (SavedQuery)),讓您指定 Web 資源的名稱和 JavaScript 函數名稱,為欄顯示自訂圖示和工具提示文字。JavaScript 程式碼會在頁面載入時執行。
您也可以使用新的 [Web 資源] 和 [函數名稱] 欄位,在 [欄屬性] 頁面中,同時在 Dynamics 365 Web 用戶端的檢視表定義中修改屬性 (欄) 的屬性,以指定 Web 資源名稱和 JavaScript 函數名稱。
下列範例程式碼示範如何以程式設計方式指定 Web 資源和 JavaScript 函數名稱,為 layoutxml 中的 opportunityratingcode 欄新增自訂圖示和工具提示:
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' imageproviderwebresource='new_SampleWebResource'
imageproviderfunctionname='displayIconTooltip' />
<cell name='opportunitycustomeridcontactcontactid.emailaddress1'
width='150' disableSorting='1' />
</row>
</grid>";
顯示自訂圖示和工具提示文字的 JavaScript 函數會預期收到下列兩個引數:在 layoutxml 中指定的整列物件,以及呼叫端使用者的地區設定識別碼 (LCID)。 LCID 參數可讓您以多種語言指定圖示的工具提示文字。 如需有關 CRM 所支援語言的詳細資訊,請參閱啟用語言和安裝或升級 Microsoft Dynamics 365 的語言套件。 如需可在程式碼中使用的地區設定識別碼 (LCID) 值清單,請參閱 Microsoft 指派的地區設定識別碼。
假設您將可能為選項組類型的屬性新增自訂圖示,它擁有一組有限的預先定義選項,您務必使用整數值選項,而不要使用標籤,避免因翻譯的標籤字串變更而使程式碼中斷。 同時,在您的 JavaScript 函數中,僅指定要做為屬性中某個值的圖示使用的影像 Web 資原名稱。 影像大小應該是 16x16 像素;較大的影像會自動縮小成 16x16 像素大小。
下列範例程式碼會顯示不同的圖示和工具提示文字,根據 opportunityratingcode (Rating) 屬性中的其中一個值 (1: Hot, 2: Warm, 3: Cold)。 範例程式碼也會顯示如何顯示翻譯的工具提示文字。 若要讓此範例運作,您必須以各為 16x16 影像建立三個影像 Web 資源 (、
和
),在您的 Dynamics 365 執行個體中,且分別具有下列名稱:new_Hot、new_Warm 和 new_Cold。
function displayIconTooltip(rowData, userLCID) {
var str = JSON.parse(rowData);
var coldata = str.opportunityratingcode_Value;
var imgName = "";
var tooltip = "";
switch (coldata) {
case 1:
imgName = "new_Hot";
switch (userLCID) {
case 1036:
tooltip = "French: Opportunity is Hot";
break;
default:
tooltip = "Opportunity is Hot";
break;
}
break;
case 2:
imgName = "new_Warm";
switch (userLCID) {
case 1036:
tooltip = "French: Opportunity is Warm";
break;
default:
tooltip = "Opportunity is Warm";
break;
}
break;
case 3:
imgName = "new_Cold";
switch (userLCID) {
case 1036:
tooltip = "French: Opportunity is Cold";
break;
default:
tooltip = "Opportunity is Cold";
break;
}
break;
default:
imgName = "";
tooltip = "";
break;
}
var resultarray = [imgName, tooltip];
return resultarray;
}
結果將會顯示 Rating 欄中的值,且根據值顯示適當的圖示,當滑鼠停留在圖示上,會顯示圖示工具提示文字。
設定為預設
只有一個使用中公用檢視表才能設定為預設檢視表。 若要讓檢視成為預設檢視表,將 IsDefault 屬性設定為 true。
另請參閱
範例:使用檢視表
SavedQuery (檢視表) 實體訊息和方法
Saved query XML reference
使用 FetchXML 建立查詢
搭配使用組織服務與 Dynamics 365 中繼資料
自訂實體表單
自訂全域選項組
自訂 Microsoft Dynamics 365 應用程式
Microsoft Dynamics 365
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權