Lançado Adianti Framework 7.6!
Clique aqui para saber mais
DataGrid com informações horizontais e verticais Pessoal, boa tarde! Estou iniciando um projeto, e gostaria de utilizar o Adianti, e gostaria de saber se é possível criar um DataGrid que lista na horizontal uma informação de data e na vertical usuários, listando os usuários que estão presentes. Onde deve existir uma interação de salvar, editar e excluir a informação de presença em uma outra tabela. Segue exemplo para um melhor ...
HL
DataGrid com informações horizontais e verticais  
Pessoal, boa tarde!

Estou iniciando um projeto, e gostaria de utilizar o Adianti, e gostaria de saber se é possível criar um DataGrid que lista na horizontal uma informação de data e na vertical usuários, listando os usuários que estão presentes. Onde deve existir uma interação de salvar, editar e excluir a informação de presença em uma outra tabela.

Segue exemplo para um melhor entendimento.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (4)


NR

Acho que nesse caso é mais fácil trabalhar com o componente TTable diretamente.
adianti.com.br/framework_files/tutor/index.php?class=ContainerTableV
HL

Nataniel, vou analisar sua indicação, porém talvez tenha achado uma solução através de exemplo do tutor, mas não sei por onde começar.

Ajustei o exemplo do tutor através de um laço for, cria o número de colunas que necessito (na vida real vem do banco), no onReload devo carregar meus dados de cada usuário, como também todos os meus check’s, porém não consigo fazer isso utilizando um for, pois iria gerar erro de sintaxe.

  1. <?php
  2. for ($i=0;$i<10;$i++){
  3. $item->check $i    = new TCheckButton('check'$i);
  4. $item->check$i ->setIndexValue('dia 2');
  5. }
  6. ?>


Segue a classe completa e o resultado gerado(https://www.screencast.com/t/r9rw5QIEU8z8):

  1. <?php
  2. /**
  3.  * DatagridQuickView
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class DatagridCheckView extends TPage
  13. {
  14.     private $form;
  15.     private $datagrid;
  16.     
  17.     public function __construct()
  18.     {
  19.         parent::__construct();
  20.         
  21.         $this->form = new TForm;
  22.         
  23.         // creates one datagrid
  24.         $this->datagrid = new TQuickGrid;
  25.         $this->datagrid->disableDefaultClick(); // important!
  26.         
  27.         $this->form->add($this->datagrid);
  28.         
  29.         $this->datagrid->addQuickColumn('RA',    'code',    'right'70);
  30.         $this->datagrid->addQuickColumn('Aluno',    'name',    'right'70);
  31.         
  32.         // add the columns
  33.         for($i=0;$i<10;$i++){
  34.             $this->datagrid->addQuickColumn('Check'.$i,   'check'.$i,   'right'40);
  35.         }
  36.         
  37.         // creates the datagrid model
  38.         $this->datagrid->createModel();
  39.         
  40.         // creates the action button
  41.         $button1=new TButton('action1');
  42.         // define the button action
  43.         $button1->setAction(new TAction(array($this'onSave')), 'Save');
  44.         $button1->setImage('ico_save.png');
  45.         
  46.         $this->form->addField($button1);
  47.         
  48.         // wrap the page content using vertical box
  49.         $vbox = new TVBox;
  50.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  51.         $vbox->add($this->form);
  52.         $vbox->add($button1);
  53.         parent::add($vbox);
  54.     }
  55.     
  56.     /**
  57.      * Load the data into the datagrid
  58.      */
  59.     function onReload()
  60.     {
  61.          $this->datagrid->clear();
  62.          
  63.          // add an regular object to the datagrid
  64.          $item = new StdClass;
  65.          
  66.        
  67.          $item->code     '1';
  68.          $item->name     =  ('pedro');
  69.         
  70.          $item->check1    = new TCheckButton('check1');
  71.          $item->check1->setIndexValue('dia 2');
  72.          
  73.          $item->check3    = new TCheckButton('check3');
  74.          $item->check3->setIndexValue('dia 4');
  75.          
  76.          $this->datagrid->addItem($item);
  77.          
  78.          $item->code     '2';
  79.          $item->name     =  'joao';
  80.          
  81.          $item->check1    = new TCheckButton('check1');
  82.          $item->check1->setIndexValue('dia 2');
  83.          
  84.          $item->check3    = new TCheckButton('check3');
  85.          $item->check3->setIndexValue('dia 4');
  86.          
  87.          $this->datagrid->addItem($item);
  88.          
  89.         
  90.          
  91.     }
  92.     
  93.     /**
  94.      * Simulates an save button
  95.      * Show the form content
  96.      */
  97.     public function onSave($param)
  98.     {
  99.         $data $this->form->getData(); // optional parameter: active record class
  100.         
  101. //         // put the data back to the form
  102.        $this->form->setData($data);
  103. //         
  104.         // creates a string with the form element's values
  105.         $message 'Check 1 : ' $data->check1 ' Name : ' $data->name '<br>';
  106.       
  107.         
  108.         // show the message
  109.         new TMessage('info'$message);
  110.     }
  111.     
  112.     /**
  113.      * shows the page
  114.      */
  115.     function show()
  116.     {
  117.         $this->onReload();
  118.         parent::show();
  119.     }
  120. }
  121. ?>

NR

Na verdade o erro exibido não é de sintaxe. Você precisa definir a mesma quantidade de itens do for no onReload:
  1. <?php
  2. //onReload
  3. $item->check0 '';
  4. $item->check1 '';
  5. ...
  6. $item->check8 '';
  7. $item->check9 '';
  8. ?>
HL

O número de check vai variar, pois vai ser uma informação de acordo com o período selecionado pelo usuário, essa informação será preenchida dentro de um foreach.

Por isso apresentei o exemplo com erro de sintaxe, pois aquele trecho é o que mais se assemelha do que preciso.