ES
Compartilhamento de Ideias - DataGrid com Vários Componentes
Fechado
Olá pessoal!
Há muito tempo queria fazer um teste de uma DataGrid Massive Update contendo vários componentes, tais como: TEntry(exemplo do Tutor), TCombo, TDate, etc.
Finalmente consegui terminar o meu teste e fiquei tão feliz com o resultado que resolvi compartilhar para que, aqueles que desejam algo desse tipo, saibam que é possível e aqueles que já fizeram algo assim também compartilhe sua ideia.
Estou colocando a imagem da tela abaixo e o código que realiza a proeza. Usei uma variável de sessão para guardar os dados.
Abs a todos!
Código:
Há muito tempo queria fazer um teste de uma DataGrid Massive Update contendo vários componentes, tais como: TEntry(exemplo do Tutor), TCombo, TDate, etc.
Finalmente consegui terminar o meu teste e fiquei tão feliz com o resultado que resolvi compartilhar para que, aqueles que desejam algo desse tipo, saibam que é possível e aqueles que já fizeram algo assim também compartilhe sua ideia.
Estou colocando a imagem da tela abaixo e o código que realiza a proeza. Usei uma variável de sessão para guardar os dados.
Abs a todos!
Código:
- <?php function onReload($param = NULL)
- {
- try
- {
- $this->datagrid->clear();
- $sel_objects = TSession::getValue('sel_objects');
- if ($sel_objects)
- {
- $tArray = array();
- foreach ($sel_objects as $object)
- {
- //Verifica se é um objeto
- if (!isset($object->ALL_FILIAIS->name)) {
- $vlr_temp = $object->ALL_F;
- $object->ALL_FILIAIS = new TCombo('ALL_FILIAIS_'.$object->LANCAMENTO);
- $object->ALL_FILIAIS->setSize(60);
- $object->ALL_FILIAIS->addItems(array('S'=>'Sim', 'N'=>'Não'));
- $object->ALL_FILIAIS->setProperty('align', 'center');
- $object->ALL_FILIAIS->setValue($vlr_temp);
- }
- if (!isset($object->VENCIMENTO_INI->name)) {
- $vlr_temp = $object->VENC_INI;
- $object->VENCIMENTO_INI = new TDate('VENCIMENTO_INI_'.$object->LANCAMENTO);
- $object->VENCIMENTO_INI->setSize(60);
- $object->VENCIMENTO_INI->setMask('dd/mm/yyyy');
- $object->VENCIMENTO_INI->setProperty('align', 'center');
- $object->VENCIMENTO_INI->setValue($vlr_temp);
- }
- if (!isset($object->NUMERO_PARCELAS->name)) {
- $vlr_temp = $object->NUM_PARCELAS;
- $object->NUMERO_PARCELAS = new TEntry('NUMERO_PARCELAS_'.$object->LANCAMENTO);
- $object->NUMERO_PARCELAS->setSize(40);
- $object->NUMERO_PARCELAS->setProperty('align', 'center');
- $object->NUMERO_PARCELAS->setValue($vlr_temp);
- }
- if (!isset($object->OCORRENCIA->name)) {
- $vlr_temp = $object->OCOR;
- $object->OCORRENCIA = new TCombo('OCORRENCIA_'.$object->LANCAMENTO);
- $object->OCORRENCIA->setSize(90);
- $object->OCORRENCIA->addItems(array('S'=>'Semanal', 'Q'=>'Quinzenal', 'M'=>'Mensal', 'A'=>'Anual'));
- $object->OCORRENCIA->setProperty('align', 'center');
- $object->OCORRENCIA->setValue($vlr_temp);
- }
- $tArray[] = $object->ALL_FILIAIS;
- $tArray[] = $object->VENCIMENTO_INI;
- $tArray[] = $object->NUMERO_PARCELAS;
- $tArray[] = $object->OCORRENCIA;
- //$this->formSel->addField($object->ALL_FILIAIS);
- $this->datagrid->addItem($object);
- }
- }
- $this->formSel->setFields($tArray);
- //$this->formSel->addField($object->ALL_FILIAIS);
- $this->loaded = true;
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- // undo all pending operations
- TTransaction::rollback();
- }
- } ?>
Código para salvar os dados:
Show de bola Eliezer, ótimo artigo.
Show de bola Eliiezer
Parabéns !!!
Parabéns Eliezer,
Cara ficou muito bonito!
Abraço,
Pablo
Eliezer,
Ficou show!!!
Alto nível, fora de série!
Parabéns!
Valeu pessoal! Já, já, vou postar o resultado com a nova versão do framework e, claro, usando outros recursos que agora temos à disposição.
Ola Eliezer... Como vc fez par colocar os componentes na datagrid ?
A forma que eu fiz está tudo ai no código, só não coloquei a definição da Datagrid porque é irrelevante, basta declarar normalmente e colocar todos os campos porque esses serão substituídos no onReload.
Ahhhhhhh , então eu vi certo, ele redefine os campos e os torna componentes no onReload. Valeu Eliezer.
Sugestão:
$id = end($parts);
Ola Amigo parabéns poderia dar a dia de como fez o CAMPO DATA. Esse tipo de exibição para escolha da data no padrao Brasileiro.
Olá Apolonio, obrigado!
Basta , logo após a declaração do seu campo como Tdate, colocar um setMask("dd/mm/yyyy");
Eliezer Morais,
teria como postar o código inteiro da Página que contem esta DataGrid?
Olá Eliezer, já atualizou o código com a versão 4.0? poderia disponibilizar o novo código?