4D View Pro oferece-lhe uma nova forma de carregar os seus dados e criar os seus modelos: o contexto dos dados. Permite-lhe criar o seu documento com marcadores de lugar e preenchê-los, definindo este contexto de dados.
Com apenas algumas linhas de código, é possível exibir objectos ou colecções sem os autorizar primeiro com VP SET CUSTOM FUNCTION! Vamos mergulhar nos detalhes.
Criar um documento com os titulares dos lugares
Primeiro, é necessário criar um documento com os seus atributos de objecto. Por exemplo, se utilizar um objecto com 2 atributos, Primeiro Nome e Último Nome, pode criar dois marcadores de lugar com o VP SET BINDING PATH comando:
VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 0); "Firstname")
VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 1); "Lastname")
Nenhum valor aparece na sua folha porque o contexto dos dados ainda não está definido. Para verificar se as suas células estão correctamente encadernadas, vá para o separador DADOS da interface da Fita e clique no botão Encadernação da Folha. Os nomes dos seus atributos aparecerão entre parênteses:
Contexto dos dados
Agora que o seu modelo está pronto, basta definir o seu contexto de dados com o seu objecto usando VP SET DATA CONTEXT:
$object:=New object
$object.Firstname:="John"
$object.Lastname:="Smith"
VP SET DATA CONTEXT("ViewProArea"; $object)
Assim, o modelo é actualizado automaticamente:
Evidentemente, o utilizador pode modificar os dados:
Neste caso, não há problema; basta usar o VP Get data context método para recuperar o seu objecto com as modificações:
$object:=VP Get data context("ViewProArea")
//$object={Firstname:Judith,Lastname:Smith}
Injecção de dados em folhas de dados
Se passar uma colecção para o seu contexto de dados, esta colecção será automaticamente vinculada à folha. Se a opção autoGenerateColumns do VP SET DATA CONTEXT é definido para true, a colecção é automaticamente exibida na folha.
Por exemplo, se quiser exibir uma tabela de base de dados, basta escrever:
$people:=ds.People.all().toCollection()
VP SET DATA CONTEXT("ViewProArea"; $people; New object("autoGenerateColumns"; True)
Obtém:
O número de colunas e linhas é calculado automaticamente, e os nomes das colunas são os nomes dos campos da tabela.
Note que se autoGenerateColumns não estiver definido como verdadeiro, nenhum dado é exibido!
Verifique o IDH acima para ver estes comandos em acção. Além disso, certifique-se de ler a documentação para mais detalhes!