Uma lista de detalhes (DetailsList) é uma maneira robusta de exibir uma coleção de itens rica em informações e permitir que as pessoas classifiquem, agrupem e filtrem o conteúdo. Use um DetailsList quando a densidade das informações for crítica.
Pode ser vinculado a um conjunto de dados ou coleção local do Dataverse.
Oferece suporte a colunas configuráveis separadas dos metadados de coluna fornecidos pelo conjunto de dados de origem para flexibilidade.
Tipos de células para links, ícones, expandir/recolher e células de subtexto.
Suporte para paginação.
Suporte para classificação usando a classificação do Dataverse ou propriedades SortBy configuráveis.
Propriedades
Principais Propriedades
Propriedade
Description
Items
O conjunto de dados que contém as linhas a serem renderizadas. Também exibido como Records. Consulte a tabela de propriedades dos Itens abaixo.
Columns
O conjunto de dados que contém metadados de opção para as colunas. Se este conjunto de dados for fornecido, ele substituirá completamente as colunas fornecidas no conjunto de dados Registros. Consulte a tabela de propriedades das Colunas abaixo.
SelectionType
Tipo de Seleção (Nenhum, Único, Múltiplo)
PageSize
Define quantos registros devem ser carregados por página.
PageNumber
Gera a página atual mostrada.
HasNextPage
Gera verdadeiro, se houver uma próxima página.
HasPreviousPage
Gera verdadeiro, se houver uma página anterior.
TotalRecords
Gera o número total de regras disponíveis.
CurrentSortColumn
O nome da coluna a ser mostrada como usada atualmente para classificação
CurrentSortDirection
A direção da coluna de classificação atual que está sendo usada
Items Propriedades
Esses atributos devem estar disponíveis na fonte de dados para habilitar a funcionalidade relacionada. A fórmula Power Fx AddColumns() pode ser usada para anexar esses valores à fonte de dados original.
Propriedade
Description
RecordKey
(opcional) - O nome exclusivo da coluna de chave. Forneça esta opção, se quiser que a seleção seja preservada quando os Registros forem atualizados e quando quiser que o EventRowKey contenha a ID, em vez do índice de linha após o evento OnChange ser acionado.
RecordCanSelect
(opcional) - O nome da coluna que contém um valor boolean que define se uma linha pode ser selecionada.
RecordSelected
(opcional) - O nome da coluna que contém um valor boolean, definindo se uma linha é selecionada por padrão e ao definir o InputEvent para conter SetSelection. Consulte a seção no Set Selection abaixo.
Columns Propriedades
Propriedade
Description
ColDisplayName
(Obrigatório) - Fornece o nome da coluna a ser exibida no cabeçalho.
ColName
(Obrigatório) - Fornece o nome do campo real da coluna a ser exibida na coleção Itens.
ColWidth
(Obrigatório) - Fornece a largura fixa absoluta da coluna em pixels.
ColCellType
O tipo de célula a ser renderizado. Valores possíveis: expand, tag, indicatortag, image, clickableimage, link. Para obter mais informações, consulte as próximas seções.
ColHorizontalAlign
O alinhamento do conteúdo da célula se o ColCellType for do tipo image ou clickableimage.
ColVerticalAlign
O alinhamento do conteúdo da célula se o ColCellType for do tipo image ou clickableimage.
ColMultiLine
Verdadeiro quando o texto nas células tiver que ser quebrado, se for muito longo para caber na largura disponível.
ColResizable
Verdadeiro quando a largura do cabeçalho da coluna tiver que ser redimensionável.
ColSortable
Verdadeiro quando a coluna tiver que ser classificável. Se o conjunto de dados suportar classificação automática por meio de uma conexão do Dataverse, os dados serão classificados automaticamente. Caso contrário, as saída SortEventColumn e SortEventDirection serão definidas e deverão ser usadas na expressão de associação do Power FX de registros.
ColSortBy
O nome da coluna a ser fornecida para o evento OnChange quando a coluna for classificada. Por exemplo, se você estiver classificando colunas de data, você quer classificar pelo valor de data real, em vez de texto formatado mostrado na coluna.
ColIsBold
Verdadeiro quando os dados da célula de dados tiverem que ficar em negrito
ColTagColorColumn
Se o tipo de célula for marca, defina a cor de fundo hexadecimal da marca de texto. Não pode ser definido como transparent. Se o tipo de célula não for uma marca, defina uma cor hexadecimal para usar como uma célula de marca de círculo do indicador. Se o valor do texto estiver vazio, a marca não é mostrada.
ColTagBorderColorColumn
Defina como uma cor hexadecimal para usar como a cor da borda de uma marca de texto. Não pode ser definido como transparent.
ColHeaderPaddingLeft
Adiciona preenchimento ao texto do cabeçalho da coluna (pixels)
ColShowAsSubTextOf
Definir isso como o nome de outra coluna fará com que a coluna seja filho dessa coluna. Veja abaixo nas colunas de Subtexto.
ColPaddingLeft
Adiciona preenchimento à esquerda da célula filho (pixels)
ColPaddingTop
Adiciona preenchimento na parte superior da célula filho (pixels)
ColLabelAbove
Move o rótulo acima do valor da célula filho, se for mostrado como uma coluna de Subtexto.
ColMultiValueDelimiter
Une valores de matriz de vários valores com este delimitador. Veja abaixo em colunas de vários valores.
ColFirstMultiValueBold
Ao mostrar um valor de matriz com vários valores, o primeiro item é mostrado em negrito.
ColInlineLabel
Se definido como um valor de string, isso é usado para mostrar um rótulo dentro do valor da célula que pode ser diferente do nome da coluna. por exemplo
ColHideWhenBlank
Quando verdadeiro, qualquer rótulo e preenchimento em linha da célula ficarão ocultos, se o valor da célula estiver em branco.
ColSubTextRow
Ao mostrar várias células em uma célula de subtexto, defina como o índice de linha. Zero indica a linha de conteúdo da célula principal.
ColAriaTextColumn
A coluna que contém a descrição ária das células (por exemplo, células de ícone).
ColCellActionDisabledColumn
A coluna que contém um sinalizador booliano para controlar se uma ação de célula (por exemplo, células de ícone) está desabilitada.
ColImageWidth
O tamanho do ícone/imagem em pixels.
ColImagePadding
O preenchimento em torno de uma célula de ícone/imagem.
ColRowHeader
Define uma coluna para renderizar maior que as outras células (14 px em vez de 12 px). Normalmente, há apenas um único Cabeçalho de Linha por conjunto de colunas.
Verdadeiro quando o estilo compacto tiver que ser usado
AlternateRowColor
O valor hexadecimal da cor da linha a ser usado em linhas alternativas.
SelectionAlwaysVisible
Os botões de opção de seleção devem estar sempre visíveis e não apenas na linha de foco.
AccessibilityLabel
O rótulo a ser adicionado à descrição ária da tabela
Propriedades do evento
Propriedade
Description
RaiseOnRowSelectionChangeEvent
O evento OnChange é gerado quando uma linha é marcada/desmarcada. (consulte abaixo)
InputEvent
Um ou mais eventos de entrada (que podem ser combinados usando concatenação de cadeia de caracteres). Valores possíveis SetFocus, SetFocusOnRow, SetFocusOnHeader, ClearSelection, SetSelection. Deve ser seguido por um elemento de cadeia de caracteres aleatório para garantir que o evento seja acionado. Os eventos podem ser combinados, por exemplo, SetFocusClearSelection irá limpar e definir o foco ao mesmo tempo. SetFocusOnRowSetSelection definirá o foco em uma linha e definirá a seleção ao mesmo tempo.
EventName
Evento de Saída quando OnChange for acionado. Valores possíveis - Sort, CellAction, OnRowSelectionChange
EventColumn
Nome do campo da coluna Evento de Saída usado quando CellAction for chamado
EventRowKey
Coluna de Evento de Saída que contém o índice da linha em que o evento foi chamado ou a chave de linha, se a propriedade RecordKey estiver definida.
SortEventColumn
O nome da coluna que acionou o evento de Classificação OnChange
SortEventDirection
A direção de classificação que acionou o evento de Classificação OnChange
Uso Básico
Para determinar quais colunas são exibidas no DetailsList, configure as seguintes propriedades do DetailsList:
Campos. Adicione os campos desejados, selecionando a opção Editar no submenu de controles à direita (usa a mesma interface para modificar cartões de dados predefinidos).
Colunas. Forneça mapeamento específico entre colunas e campos na propriedade Columns.
Exemplo:
Mapeamento para a tabela do sistema do Dataverse Contas, com a seguinte fórmula:
A propriedade da coluna ColShowAsSubTextOf define uma coluna como sendo mostrada abaixo do valor em outra coluna. Isso pode ser usado para mostrar informações secundárias e conteúdo expansível (veja abaixo).
Se você tivesse uma coleção definida como:
ClearCollect(colAccounts,
{id:"1",name:"Contoso",city:"Redmond",country:"U.S.",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",expand:false},
{id:"2",name:"Litware, Inc",city:"Dallas",country:"U.S.",description:"Donec vel pellentesque turpis.",expand:false});
O resultado seria uma tabela semelhante à seguinte:
Tipos de Célula
A propriedade da coluna ColCellType aceita os seguintes valores: expand, tag, image, indicatortag, clickableimage, link
Expandir/Recolher
Se as linhas de 'Subtexto' exigirem um ícone de expandir/recolher, uma coluna adicional poderá ser adicionada ao conjunto de dados da coluna e à definição da coluna ColCellType define expand também:
Supondo que uma propriedade RecordKey seja definida como a coluna index, o evento OnChange poderia conter o seguinte para expandir/recolher as linhas:
If(Self.EventName="CellAction" && Self.EventColumn="expand",
With(LookUp(colExpand,index=Self.EventRowKey) As Row,
Patch(colExpand,Row,{expand:!Row.expand})
)
);
Esta ação procura a linha que teve a Ação de Célula chamada ao usar o índice (se nenhum RecordKey estiver definido, então o EventRowKey conterá o número da linha) e, em seguida, alternará o valor de expansão.
Isso dará o seguinte resultado:
Marca & Marca do Indicador
Usando um tipo de célula de tag ou indicatortag, você pode criar marcas coloridas em linha para exibir o conteúdo da célula.
tag - Isso mostrará uma caixa de tags com um fundo e borda coloridos
tagindicator - Mostra uma caixa de marcação com um indicador de círculo colorido
As cores podem variar por linha e, portanto, o conjunto de dados de metadados da coluna simplesmente fornece o nome das colunas que contêm as cores das marcas.
Você pode adicionar os metadados da coluna para adicionar duas colunas, uma exibida como uma marca e a outra como um indicador de marca, cada uma usando as colunas TagColor e TagBorderColor para determinar as cores:
Usando um tipo de célula de image ou clickableimage, você pode configurar imagens em linha que opcionalmente podem ser selecionadas para aumentar a ação OnChange.
O conteúdo da imagem pode ser definido prefixando com:
data: Usando dados de imagem svg embutidos: por exemplo, data:image/svg+xml;utf8, %3Csvg%20%20viewBox%3D%270%200%2020...
Se a imagem for do tipo clickableimage, o evento OnChange será acionado quando o ícone for selecionado, com um EvenName de CellAction, EventColumn fornecendo o nome da coluna de imagem e EventRowKey sendo o RecordKey da linha (se nenhum RecordKey estiver definido, então o EventRowKey conterá o número da linha).
Para a coluna clickableimage, o evento OnChange pode ser manipulado quando um usuário seleciona (mouse ou teclado) e ícone (supondo que não esteja desabilitado) usando:
O EventRowKey será preenchido com o valor da coluna definido como a propriedade RecordKey.
Links
As colunas podem ser renderizadas como links, que acionarão o evento OnChange quando o link for selecionado de maneira semelhante à forma como as imagens clicáveis descritas acima funcionam.
Os metadados da coluna para um link são configurados da seguinte forma:
Isso resultará no conteúdo da célula sendo renderizado como:
O evento OnChange é acionado novamente quando o link é clicado, com o EventColumn sendo o nome da coluna que contém o link, e o EventRowKey preenchido com o valor da coluna definido como a propriedade RecordKey.
Colunas de vários valores
Se um valor de coluna puder ter vários valores, definindo-o como uma Tabela/Coleção. Isso renderizará os valores como valores de várias células. por exemplo:
Uma coluna é definida como classificável definindo a propriedade ColSortable como verdadeira. Se a coluna mostrar um valor de texto diferente da ordem de classificação exigida (por exemplo, uma coluna de data ou status formatada), uma coluna de classificação diferente poderá ser especificada usando a propriedade ColSortBy.
A classificação é então tratada de duas maneiras:
Automaticamente, quando conectado a uma fonte de dados do Dataverse.
Manualmente, ao usar coleções.
Classificação Automática
Quando o conjunto de dados de Itens for um conjunto de dados nativo do Dataverse, ele será classificado automaticamente, se uma coluna for marcada como classificável. Se houver alguma alteração feita na forma de uma coleção do Dataverse usando AddColumn, ou armazenando os dados em uma coleção, a classificação automática não funcionará mais e a classificação manual deverá ser implementada.
Classificação Manual
A Classificação Manual é suportada fora do componente para permitir suporte de conector personalizado e classificação de coleção local quando não estiver conectado a uma conexão do Dataverse. As colunas podem ser definidas como classificáveis ou não. Quando a classificação de coluna é selecionada, um evento OnChange é gerado, fornecendo a coluna e direção. O aplicativo deve usar esses valores para alterar a coleção vinculada à tabela para atualizar com os registros classificados.
Na coleção Colunas, adicione uma coluna booliana classificável
Adicione o nome da coluna classificável à propriedade Columns.ColSortable
Dentro do evento OnChange da Tabela, adicione o código:
Quando o evento OnChange é acionado depois que o usuário seleciona no cabeçalho da coluna para alterar a classificação, as variáveis de contexto de classificação são atualizadas, usando as novas informações de classificação fornecidas, o que faz com que o conjunto de dados de entrada seja reclassificado e a tabela seja atualizada adequadamente.
Paginação
A paginação é tratada internamente pelo componente, porém os botões para retroceder/avançar devem ser criados pelo aplicativo de hospedagem e os eventos enviados para o componente.
As seguintes propriedades são usadas para controlar a paginação:
PageSize - Define quantos registros carregar por página.
PageNumber - Exibe a página atual exibida.
HasNextPage - Retorna verdadeiro se There for a próxima página.
HasPreviousPage - Retorna verdadeiro se There for uma página anterior.
TotalRecords - Exibe o número total de registros disponíveis.
Os botões de paginação podem ser definidos da seguinte forma:
Isso é implementado usando o evento 'SetFocusOnRow'. Se você tivesse a propriedade InputEvent vinculada a ctxGridEvent, na propriedade OnSelect do botão da próxima página, você usaria: UpdateContext({ctxGridEvent:"LoadNextPageSetFocusOnRow" & Text(Rand())});
Eventos de Entrada
A propriedade InputEvent pode ser definida como um ou mais dos seguintes eventos:
SetFocus - Define o foco na primeira linha da grade
ClearSelection - Limpa qualquer seleção e retorna à seleção padrão.
SetSelection - Define a seleção conforme definido pelo RowSelected coluna.
LoadNextPage - Carrega a próxima página se There for uma
LoadPreviousPage - Carrega a página anterior se There's uma
LoadFirstPage - Carrega a primeira página
Para garantir que o evento de entrada seja selecionado, ele deve ser suficiente com um valor aleatório. Por exemplo, SetSelection" & Text(Rand())
Consulte abaixo para obter detalhes.
Itens Selecionados e Ações de Linha
O componente suporta os modos de seleção Único, Múltiplo ou Nenhum.
Ao selecionar os itens, as propriedades SelectedItems e Selected são atualizadas.
SelectedItems - Se a tabela estiver no modo de seleção múltipla, ela conterá um ou mais registros da coleção Itens.
Selected - Se a tabela estiver no modo Seleção única, ela conterá os registros selecionados.
Quando um usuário chama a ação de linha, clicando duas vezes ou pressionando Enter ou uma linha selecionada, o evento OnSelect é acionado. A propriedade Selected conterá uma referência ao registro que foi chamado. Este evento pode ser usado para mostrar um registro detalhado ou navegar para outra tela.
Se a propriedade RaiseOnRowSelectionChangeEvent estiver habilitada, quando as linhas selecionadas forem alteradas, o evento OnChange será gerado com o EventName definido como OnRowSelectionChange. Se o aplicativo precisar responder a uma seleção de linha única em vez de um clique duplo de linha, o OnChange pode detectar isso usando um código semelhante a:
A variável de contexto ctxTableEvent pode então ser vinculada à propriedade InputEvent.
Definir Seleção de Linha
Se houver um cenário em que um conjunto específico de registros deva ser selecionado de forma programada, a propriedade InputEvent poderá ser definida como SetSelection ou SetFocusOnRowSetSelection, em combinação com a configuração da propriedade RecordSelected no registro.
por exemplo, se você tivesse um conjunto de dados da seguinte forma:
{RecordKey:1, RecordSelected:true, name:"Row1"}
Para selecionar e selecionar a primeira linha, você pode definir o InputEvent para ser "SetFocusOnRowSetSelection"&Text(Rand()) ou "SetSelection"&Text(Rand())
Configurar o comportamento "On Change"
Adicione e modifique a seguinte fórmula na propriedade OnChange do componente para configurar ações específicas com base no EventName fornecido pelo componente:
Acione eventos quando um usuário alterar a linha selecionada: habilite a propriedade Gerar evento OnRowSelectionChange no componente.
Configure o comportamento do link: adicione colunas com o valor ColCellType definido como link.
/* Runs when selected row changes and control property 'Raise OnRowSelection event' is true */
If( Self.EventName = "OnRowSelectionChange",
Notify( "Row Select " & Self.EventRowKey )
);
/* Runs when a user selects a column with ColCellType set to 'link' */
If( Self.EventName = "CellAction",
Notify( "Open Link " & Self.EventColumn & " " & Self.EventRowKey )
)
Limitações
Esse componente de código só pode ser usado em aplicativos de tela e páginas personalizadas.
Demonstrar o uso das soluções do Microsoft Power Platform para simplificar, automatizar e capacitar processos corporativos para organizações na função de Consultoria Funcional.