Personalizar modos de exibição de entidade
Publicado: novembro de 2016
Aplicável a: Dynamics CRM 2015
As exibições de entidade são consultas especiais salvas que recuperam dados usando um filtro específico. Também contêm informações sobre como os dados na exibição devem ser mostrados no aplicativo. As exibições de entidade são registros de SavedQuery que podem ser criados de forma programática. Também é possível defini-las como XML e importá-las para o Microsoft Dynamics 365 com uma solução não gerenciada.
Uma exibição de entidade é diferente de uma UserQuery. Uma consulta de usuário, chamada de exibição salva no aplicativo, é propriedade de um usuário individual, pode ser atribuída e compartilhada com outros usuários e pode ser exibida por outros usuários, dependendo dos privilégios de acesso da consulta. Isso é apropriado para consultas usadas com frequência que abrangem os tipos de entidade e consultas que executam agregação.Para obter mais informações:Entidade UserQuery (exibição salva)
Neste tópico
Tipos de exibições
Exibir tarefas
Criar exibições
Atualizar exibições
Excluir exibições
Recuperar exibições
Desativar exibições
Editar critérios de filtragem ou configurar a classificação
Editar colunas
Definir como padrão
Tipos de exibições
A tabela a seguir lista os cinco tipos de exibições que têm suporte para personalização. O código do tipo de uma exibição é armazenado no atributo SavedQuery.QueryType. Observe que há outros valores válidos para o atributo QueryType não listados aqui, porque essa entidade também é usada para armazenar filtros e modelos do Microsoft Office Outlook. Para obter mais informações, consulte Filtros e modelos do Outlook e offline.
Quando exibições são definidas para uma entidade específica, o atributo SavedQuery.ReturnedTypeCode retorna o nome lógico da entidade.
Tipo de exibição |
Código de Tipo |
Descrição |
---|---|---|
Público |
0 |
|
Localização Avançada |
1 |
|
Associado |
2 |
|
Localização Rápida |
4 |
|
Pesquisa |
64 |
|
Exibir tarefas
Como as exibições são registros SavedQuery, você pode criar, atualizar, recuperar, excluir e desativá-las. Além disso, você pode editar os critérios de filtragem ou configurar a classificação, editar colunas ou definir uma exibição como padrão.
Criar exibições
Para criar uma exibição pública, especifique as seguintes propriedades:
SavedQuery.Name: Um identificador exclusivo da consulta salva.
SavedQuery.ReturnedTypeCode: coincide o nome lógico da entidade.
SavedQuery.FetchXml: Consulte Use FetchXML para criar uma consulta.
SavedQuery.LayoutXml: Consulte <layoutxml> (SavedQuery) para os elementos válidos.
SavedQuery.QueryType: Deve ser sempre zero (0).
O exemplo a seguir cria uma nova exibição pública para a entidade da oportunidade:
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);
Atualizar exibições
Se a propriedade gerenciada SavedQuery.IsCustomizable permitir que a exibição seja atualizada, você poderá usar o método IOrganizationService.Update ou a mensagem UpdateRequest para atualizar a exibição.
Excluir exibições
Você só deve excluir as consultas salvas que você tenha criado. Um componente da solução ou parte do aplicativo pode depender de uma consulta salva específica. Se houver consultas que você não quer que apareçam no aplicativo, você deve desativá-las.
Recuperar exibições
Use uma RetrieveMultipleRequest ou IOrganizationService.RetrieveMultiple para recuperar os registros de consulta salva.
O exemplo a seguir recupera todas as exibições públicas para a entidade da oportunidade:
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);
}
Desativar exibições
Se você não quiser que uma exibição pública apareça no aplicativo, você pode desativá-la. Não é possível desativar uma exibição pública que esteja definida como a exibição padrão. O exemplo a seguir desativa a exibição Oportunidades fechadas no ano fiscal atual para a entidade da oportunidade:
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);
Editar critérios de filtragem ou configurar a classificação
Para editar o filtro ou editar como os dados são classificados, você deve definir o atributo SavedQuery.FetchXml. Para obter mais informações, consulte Criar consultas com FetchXML.
Dica
Se você não estiver familiarizado com FetchXML, as mensagens a seguir poderão ser usadas para converter entre QueryExpression e FetchXML:QueryExpressionToFetchXmlRequest e FetchXmlToQueryExpressionRequest.
Editar colunas
As colunas que você deseja exibir nas exibições podem ser obtidas da entidade ou das entidades relacionadas. Para obter mais informações sobre como especificar as colunas para exibição, consulte <layoutxml> (SavedQuery).
Definir como padrão
Somente uma exibição pública ativa pode ser definida como a exibição padrão. Para obter uma exibição da exibição padrão, defina a propriedade IsDefault como verdadeira.
Confira Também
Exemplo: Trabalhar com visualizações
Mensagens e métodos da entidade SavedQuery (exibição)
Saved query XML reference
Criar consultas com FetchXML
Estender o modelo de metadados
Personalizar formulários de entidade
Personalizar conjuntos de opções globais
Guia de desenvolvedores para personalização do Microsoft Dynamics CRM 2015
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais