Partilhar via


Personalizar modos de exibição de entidade

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

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)

Você também pode usar a ferramenta de personalização no Dynamics 365 para personalizar exibições.Para obter mais informações:TechNet: Criar e editar exibições

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

  • Adicionar ícones com dica de ferramenta em uma coluna

  • 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).

Adicionar ícones com dica de ferramenta em uma coluna

Você pode adicionar um ícone personalizado com texto de dica de ferramenta que será exibido em uma coluna dependendo do valor da coluna; você também pode especificar o texto de dica de ferramenta localizado. Isso pode ser feito pela adição dos ícones personalizados como recursos Web de imagem em sua instância do Dynamics 365 e, depois, pelo uso do recurso Web de JavaScript para adicionar o código JavaScript em uma coluna para exibição dos ícones dependendo do valor da coluna.

Observação

Esse recurso foi apresentado no Atualização de dezembro de 2016 para Dynamics 365 (online e local). Adicionar ícones personalizados com dica de ferramenta suportada apenas pelas grades apenas leitura; este recurso não é suportado para grades editáveis. Para mais informações sobre grades editáveis, consulte Usar grades editáveis no Dynamics 365.

Dois novos atributos, imageproviderwebresource e imageproviderfunctionname, são adicionados ao layoutxml da savedquery (consulte <cell> (SavedQuery) que permite especificar o nome de um recurso Web e um nome de função JavaScript para exibir ícones personalizados e texto de dica de ferramenta em uma coluna. O código de JavaScript é executado quando a página carrega.

Você também pode usar os novos campos Recurso Web e Nome de Função na página Propriedades da Coluna ao modificar a propriedade de um atributo (coluna) em uma definição de exibição no cliente Web do Dynamics 365 para especificar o nome do recurso Web e o nome da função de JavaScript.

O seguinte código de exemplo demonstra como você pode especificar de forma programática um recurso Web e um nome de função de JavaScript para adicionar ícones personalizados e dicas de ferramenta em a coluna opportunityratingcode no layoutxml:

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>";

A função de JavaScript para exibição de ícones personalizados e textos de dica de ferramenta espera dois argumentos: o objeto de linha inteira especificado no layoutxml o ID de local do usuário de chamada (LCID). O parâmetro de LCID permite que você especifique o texto de dica de ferramenta para o ícone em vários idiomas. Para obter mais informações sobre as versões do separador de palavras para idiomas com suporte do CRM, Habilitar idiomas e Instalar ou atualizar pacotes de idiomas do Microsoft Dynamics 365. Para uma lista de valores de ID de localidade (LCID) que você pode usar no seu código, consulte IDs de localidade atribuídas pela Microsoft.

Assumindo que você muito provavelmente adicionará ícones personalizados para um tipo de conjunto de opções, já que se trata de um conjunto limitado de opções predefinidas, certifique-se de usar o valor inteiro das opções em vez da etiqueta para evitar a quebra do código em decorrência de alterações na cadeia de caracteres da etiqueta localizada. Além disso, na sua função de JavaScript, especifique apenas o nome de um recurso Web de imagem que deseja usar como ícone de um valor no atributo. A imagem deve ter 16x16 pixels de tamanho; imagens maiores serão automaticamente dimensionadas para o tamanho de 16x16 pixels.

O seguinte código de exemplo exibe ícones e texto de dica de ferramenta diferentes com base em um dos valores (1: Hot, 2: Warm, 3: Cold) no atributo opportunityratingcode (Rating). O código de exemplo também mostra como exibir texto de dica de ferramenta localizado. Para que este exemplo funcione, você deverá criar três recursos da Web de imagem com imagens de 16 x 16 em sua instância do (Ícone de classificação de interesse, Ícone de classificação de interesse, e instância do Ícone de classificação sem interesse) em sua instância Dynamics 365 com os nomes a seguir respectivamente: new_Hot, new_Warm, e 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;
}

Isso resulta na exibição dos valores na coluna Rating com os ícones apropriados dependendo do valor e do texto de dica do ícone quando você passa o mouse sobre o ícone.

Ícones personalizados exibidos para uma coluna em uma exibição

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
Usar o serviço da Organização com metadados do Dynamics 365
Personalizar formulários de entidade
Personalizar conjuntos de opções globais
Personalizar o aplicativo Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais