Partilhar via


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

  • Ocorrência: Muitas

  • Ações: Criar, atualizar, excluir

  • Comentários: Você pode definir uma dessas exibições como a exibição pública padrão, configurando SavedQuery.IsDefault como verdadeiro.

Localização Avançada

1

  • Ocorrência: 1

  • Ações: Somente atualização.

  • Comentários: Por padrão, essa exibição é mostrada quando os resultados são mostrados em Localização avançada.

Associado

2

  • Ocorrência: 1

  • Ações: Somente atualização,

  • Comentários: Por padrão, essa exibição é mostrada quando uma grade de registros relacionados aparece no painel de navegação de um registro.

Localização Rápida

4

  • Ocorrência: 1

  • Ações: Somente atualização.

  • Comentários: Essa exibição define as colunas que serão pesquisadas quando um usuário procurar registros usando o campo de pesquisa em uma exibição de lista.

Pesquisa

64

  • Ocorrência: 1

  • Ações: Somente atualização.

  • Comentários: Essa é a exibição padrão que será usada para pesquisar um registro quando nenhuma outra exibição tiver sido configurada para o campo de pesquisa.

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