Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Data em dd/mm/yyyy em datagrids com setTransformer() Boa tarde, Eu criei um formulário pelo Form Designer, no qual tenho um campo que é data de nascimento. A máscara para inserir no formato dd-mm-yyyy está ok, só que não estou conseguindo fazer com que apareça neste formato no meu Datagrid. Alguém pode me auxiliar na utilização do método setTransformer() ? No arquivo em anexo seguem os códigos. Muito obrigado. ...
FS
Data em dd/mm/yyyy em datagrids com setTransformer()  
Fechado
Boa tarde,
Eu criei um formulário pelo Form Designer, no qual tenho um campo que é data de nascimento. A máscara para inserir no formato dd-mm-yyyy está ok, só que não estou conseguindo fazer com que apareça neste formato no meu Datagrid.

Alguém pode me auxiliar na utilização do método setTransformer() ? No arquivo em anexo seguem os códigos.

Muito obrigado.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (9)


FC

No OnReload nesse trecho altere
  1. <?php>
  2. // iterate the collection of active records
  3.                 foreach ($objects as $object)
  4.                 {
  5.                     // add the object inside the datagrid
  6.                      $object->DataNascimento = TDate::date2br($object->DataNascimento);
  7.                     $this->datagrid->addItem($object);
  8.                 }       
  9. ?>

FS

O formato está aparecendo correto agora, só tenho mais uma dúvida. Ele está mostrando as datas todas com 0 (00/00/0000), isto deve ser provavelmente por causa do meu banco MySQL que só recebe a data no formato yyyy-mm-dd.
Eu tenho que fazer um tratamento no formulário para gravar correto, e assim aparecer certo no datagrid?

Se falei alguma besteira me corrija.

Obrigado.
FS

Felipe, consegui resolver.
alterei o trecho no método onSave do form conforme abaixo, e deu tudo certo.

// add the object inside the datagrid
$object->data_nascimento = TDate::date2br($object->data_nascimento);
$this->datagrid->addItem($object);

Muito obrigado.

Abraço.
PD

Fabiano,

Prefira usar o método setTransformer(), pois ele evita de termos de reescrever o método onReload().
Usando o setTransformer(), podemos usar o onReload() padrão do framework TStandardList, por exemplo.

  1. <?php
  2. class DatagridTransformObjectView extends TPage
  3. {
  4.     private $datagrid;
  5.     public function __construct()
  6.     {
  7.         parent::__construct();
  8.         $this->datagrid = new TDataGrid;
  9.         $date = new TDataGridColumn('date''Original date',  'left'100);
  10.         $date->setTransformer(array($this'formatDate'));
  11.         $this->datagrid->addColumn($date);
  12.         $this->datagrid->createModel();
  13.         //...
  14.     }
  15.     
  16.     public function formatDate($date$object)
  17.     {
  18.         $dt = new DateTime($date);
  19.         return $dt->format('d/m/Y');
  20.     }
  21. }
  22. ?>


Att,
FS

Obrigado Pablo, irei testar desta maneira também.

Abraço.
FC

Cuidado Fabiano pelo que entendi vc está usando o campo data como string use como Date o correto é transformar a data em formato americano no OnSave e retornar depois no OnReload.

Com o MySql eu prefiro usar o formulário completo do Studio e fazer as modificações conforme abaixo:

no OnSave

$object->data_nascimento = TDate::date2us($object->data_nascimento);
$object->store();
$object->data_nascimento = TDate::date2br($object->data_nascimento);
$this->form->setData($object);


no OnReload

$object->data_nascimento = TDate::date2br($object->data_nascimento);

Com datas trabalhe com datas no BD senão depois para tirar relatórios vai dar errado.

Sds
Felipe Cortez
FS

Obrigado pela orientação Felipe, vou ter este cuidado sim.

Abraço.
SF

Estou com o mesmo problema. Não seria possível já deixar tudo formatado dentro do MODEL, para que fosse transparente nas telas e grids ?
PD

Sergio,

Evite comentar posts antigos, dificulta a busca e a resposta também.
Converter na model é perigoso, pois nem sempre você vai querer em dd/mm/yyyy.
Te dou um exemplo: cálculo de diferença de datas.

Att,
Pablo