自定义实体视图
发布日期: 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。 保留所有权利。 版权