Compartilhar via


Utilizando SharePoint List Lookup column no Formulário Powerapps

Visão Geral

Para essa app tenho duas listas do SharePoint Online como fonte de dados. A estrutura do relacionamento das listas esta demostrado abaixo. 

Uma lista Person com o campo ID padrão, e os FirstName e LastName campo tipo texto. 

Na lista PersonalInformation tenho uma coluna do tipo Lookup que faz referencia à lista Person a coluna padrão ID*,* o objetivo é toda adição de registro pela aplicação o campo que configura este valor esteja preenchido com o valor criado na primeira tela do cadastro. 
A aplicação possui quatro telas 

  • User Lista Screen: galeria para listar os usuários e botão de adicionar novos; 
  • Add Person Screen: formulário de adição na lista Person;
  • Add Personal Information Screen: formulário de adição na lista PersonalInformation; 
  • User Details Screen: formulário de exibição das informações adicionadas; 

Telas da Apps

A tela da lista de usuários possui uma galeria galUserList e o sinal de adição que inicia o formulário de adição de pessoas. 

Na tela de adição de pessoas temos os campos estão mapeados as duas colunas da lista. 

E a tela de adição das informações pessoal as três colunas da lista e o dropdown PersonID que é a coluna lookup para a lista Person

**Coluna Lookup ID **

No primeiro cenário utilizamos a coluna ID da lista Person como referencia para a lista PersonalInformation.
A função do botão adicionar navega para a tela de adição de pessoas e inicia o formulário frmAddPerson.

Navigate([@'Add Person Screen']);NewForm(frmAddPerson)

Na tela de adição de pessoas todos os campos estão na configuração padrão do formulário e o botão prosseguir com a função de navegar para a próxima tela e iniciar o formulário de criação das informações pessoais. 

SubmitForm(frmAddPerson);Navigate([@'Add Person Screen']);NewForm(frmAddPersonalInformation)

O campo PersonID quando adicionado no formulário é criado na forma de escolha, com todos os valores do campo ID da lista Person. 

Para alterar o comportamento, desbloqueie o datacard do formulário. 

Para desabilitar a edição do campo, acesse a propriedade DisplayMode e altere o valor.

View

A campo tipo escolha espera a adição de um registro no formato id e value. Para popular este campo precisamos do id e valor do id criado no formulário anterior frmAddPerson, estes valores podem ser acessados utilizando a função LastSubmit, e alterando a propriedade *DefaultSelectedItems. *

{
Id: frmAddPerson.LastSubmit.ID, 
Value: frmAddPerson.LastSubmit.ID
}

Para salvar a adição na lista basta realizar a submissão do formulário.

SubmitForm(frmAddPersonalInformation);Navigate([@'User List Screen'])

Verificando na lista é possivel acessar o registro clicando sobre o valor PersonID. 



**Criando Coluna Identificação Personalizada **

É possível criar uma coluno na lista Person que serva de identificador para os usuários criados, altere a lista e adicione duas colunas, uma chamada Departament e outra chamada PersonID. O objetivo é usar uma valor calculado utilizando a coluna ID fornecida pela lista, com o formato departamento-ano-id

Foi adiciona uma nova coluna na lista Person do tipo escolha. 

Adicionado os nomes que serão exibidos aos usuários. 

No formulário frmAddPerson clique em editar. 

E adicione a nova coluna Departament no formulário. 

Em seguida modifique a função do botão de salvar da tela, foi criado com a função Set duas variáveis, uma chamada varDepartament para armazenar o valor selecionado, a segunda varPersonID onde será calculado o novo identificado do usuário, e em seguida com a função Patch será escrito no registro criado o valor da variável varPersonID na lista Person. O processo de Patch é necessário porque o valor da coluna ID só é definido depois da criação do registro na lista.  

Set(
    varDepartament,
    DataCardValue3.Selected.Value
);
SubmitForm(frmAddPerson);
Navigate([@'Add Personal Information']);
NewForm(frmAddPersonalInformation);
Set(
    varPersonID,
    varDepartament & "-" & Year(Now()) & "-" & frmAddPerson.LastSubmit.ID
);
Patch(
    Person,
    frmAddPerson.LastSubmit,
    {PersonID: varPersonID}
)

Na lista PersonalInformation altere a coluna lookup para a nova identificação criada. Acesse *List settings. *

Na configuração da coluna PersonID

Altere a coluna de pesquisa para a nova coluna criada. 

Em seguida altere o valor do id na tela, o id da operação será o mesmo de antes que é o id do registro criado pelo submit do último formulário, mas o valor agora será diferente, o valor deve ser o da variável criada varPersonID

{
    Id: frmAddPerson.LastSubmit.ID,
    Value: varPersonID
}

O processo deve criar o novo id e salvar nas listas.

Artigos Relacionados

Power Platform: Guia de Sobrevivencia

Referências

Introducing support for lookups and a new sample app
Edit form and Display form controls in Power Apps