Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problemas em filtrar dados no DataGrid com TDBCombo Bom dia pessoal! Estou com um problema para filtrar os dados no datagrid ...
IS
Problemas em filtrar dados no DataGrid com TDBCombo  
Bom dia pessoal!

Estou com um problema para filtrar os dados no datagrid

  1. <?php
  2. class AtletaList extends TStandardList
  3. {
  4.     protected $form;     // registration form
  5.     protected $datagrid// listing
  6.     protected $pageNavigation;
  7.     protected $formgrid;
  8.     protected $deleteButton;
  9.     protected $transformCallback;
  10.     
  11.     /**
  12.      * Page constructor
  13.      */
  14.     public function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         parent::setDatabase('sistemadb');            // defines the database
  19.         parent::setActiveRecord('Atleta');   // defines the active record
  20.         parent::setDefaultOrder('nome_atleta''asc');         // defines the default order
  21.         parent::addFilterField('id''=''id'); // filterField, operator, formField
  22.         parent::addFilterField('nome_atleta''like''name'); // filterField, operator, formField
  23.         parent::addFilterField('pais_atleta_id''like''country'); // filterField, operator, formField
  24.         parent::addFilterField('sexo_atleta_id''like''sex'); // filterField, operator, formField
  25.         parent::addFilterField('idade_atleta''like''age'); // filterField, operator, formField
  26.         parent::addFilterField('modalidade_id''like''modality'); // filterField, operator, formField
  27.         
  28.         // creates the form
  29.         $this->form = new BootstrapFormBuilder('form_search_Atleta');
  30.         $this->form->setFormTitle('Atleta');
  31.         
  32.        // create the form fields
  33.        $id = new TEntry('id');
  34.        $name = new TEntry('nome_atleta');
  35.        $country = new TDBCombo('pais_atleta_id''sistemadb''Pais''id''cod_pais');
  36.        $sex = new TDBCombo('sexo_atleta_id''sistemadb''Sexo''id''tipo_sexo');
  37.        $age = new TEntry('idade_atleta');
  38.        $modality = new TDBCombo('modalidade_id''sistemadb''Modalidade''id''nome_modalidade');
  39.        
  40.        
  41.        //add the fields
  42.        //$this->form->addFields( [new TLabel('Id')], [$id] );
  43.        $this->form->addFields( [new TLabel('Nome do Atleta')], [$name] );
  44.        $this->form->addFields( [new TLabel('País')], [$country] );
  45.        $this->form->addFields( [new TLabel('Sexo')], [$sex] );
  46.        $this->form->addFields( [new TLabel('Idade')], [$age] );
  47.        $this->form->addFields( [new TLabel('Modalidade')], [$modality] );
  48.        
  49.       $id->setEditable(FALSE);
  50.        $id->setSize('10%');
  51.        $name->setSize('30%');
  52.        $country->setSize('10%');
  53.        $sex->setSize('10%');
  54.        $age->setSize('20%');
  55.        $modality->setSize('50%');
  56.         
  57.         // keep the form filled during navigation with session data
  58.         $this->form->setDataTSession::getValue('Atleta_filter_data') );
  59.         
  60.         // add the search form actions
  61.         $btn $this->form->addAction(_t('Find'), new TAction(array($this'onSearch')), 'fa:search');
  62.         $btn->class 'btn btn-sm btn-primary';
  63.         $this->form->addAction(_t('New'),  new TAction(array('AtletaForm''onEdit')), 'fa:plus green');
  64.         
  65.         // creates a DataGrid
  66.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  67.         $this->datagrid->datatable 'true';
  68.         $this->datagrid->style 'width: 100%';
  69.         $this->datagrid->setHeight(320);
  70.         
  71.         // creates the datagrid columns
  72.         //$column_id = new TDataGridColumn('id', 'Id', 'center', 50);
  73.         $column_nome_atleta = new TDataGridColumn('nome_atleta''Nome do Atleta''left');
  74.         $column_pais_atleta = new TDataGridColumn('pais_atleta->cod_pais''País''left');
  75.         $column_sexo_atleta = new TDataGridColumn('sexo_atleta->tipo_sexo''Sexo''left');
  76.         $column_idade_atleta = new TDataGridColumn('idade_atleta''Idade''left');
  77.         $column_modalidade = new TDataGridColumn('modalidade->nome_modalidade''Modalidade''left');
  78.         // add the columns to the DataGrid
  79.         //$this->datagrid->addColumn($column_id);
  80.         $this->datagrid->addColumn($column_nome_atleta);
  81.         $this->datagrid->addColumn($column_pais_atleta);
  82.         $this->datagrid->addColumn($column_sexo_atleta);
  83.         $this->datagrid->addColumn($column_idade_atleta);
  84.         $this->datagrid->addColumn($column_modalidade);
  85.         // creates the datagrid column actions
  86.         /*$order_id = new TAction(array($this, 'onReload'));
  87.         $order_id->setParameter('order', 'id');
  88.         $column_id->setAction($order_id);*/
  89.         
  90.         $order_nome_atleta = new TAction(array($this'onReload'));
  91.         $order_nome_atleta->setParameter('order''nome_atleta');
  92.         $column_nome_atleta->setAction($order_nome_atleta);
  93.         $order_pais_atleta = new TAction(array($this'onReload'));
  94.         $order_pais_atleta->setParameter('order''pais_atleta');
  95.         $column_pais_atleta->setAction($order_pais_atleta);
  96.         $order_sexo_atleta = new TAction(array($this'onReload'));
  97.         $order_sexo_atleta->setParameter('order''sexo_atleta');
  98.         $column_sexo_atleta->setAction($order_sexo_atleta);
  99.         $order_idade_atleta = new TAction(array($this'onReload'));
  100.         $order_idade_atleta->setParameter('order''idade_atleta');
  101.         $column_idade_atleta->setAction($order_idade_atleta);
  102.         $order_modalidade = new TAction(array($this'onReload'));
  103.         $order_modalidade->setParameter('order''modalidade');
  104.         $column_modalidade->setAction($order_modalidade);
  105.         
  106.         // create EDIT action
  107.         $action_edit = new TDataGridAction(array('AtletaForm''onEdit'));
  108.         $action_edit->setButtonClass('btn btn-default');
  109.         $action_edit->setLabel(_t('Edit'));
  110.         $action_edit->setImage('far:edit blue');
  111.         $action_edit->setField('id');
  112.         $this->datagrid->addAction($action_edit);
  113.         
  114.         // create DELETE action
  115.         $action_del = new TDataGridAction(array($this'onDelete'));
  116.         $action_del->setButtonClass('btn btn-default');
  117.         $action_del->setLabel(_t('Delete'));
  118.         $action_del->setImage('far:trash-alt red');
  119.         $action_del->setField('id');
  120.         $this->datagrid->addAction($action_del);
  121.         
  122.         // create the datagrid model
  123.         $this->datagrid->createModel();
  124.         
  125.         // create the page navigation
  126.         $this->pageNavigation = new TPageNavigation;
  127.         $this->pageNavigation->enableCounters();
  128.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  129.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  130.         $panel = new TPanelGroup;
  131.         $panel->add($this->datagrid);
  132.         $panel->addFooter($this->pageNavigation);
  133.         
  134.         // vertical box container
  135.         $container = new TVBox;
  136.         $container->style 'width: 100%';
  137.         $container->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  138.         $container->add($this->form);
  139.         $container->add($panel);
  140.         
  141.         parent::add($container);
  142.     }
  143. }
  144. ?>



Acredito que o problema seja no TDBCombo, mas não tenho ideia de como resolver.

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 (4)


JM

Igor
Segundo documentação do Adianti :
https://www.adianti.com.br/api-framework-widget-wrapper-TDBCombo

A o primeiro parâmetro do componente TDBCombo deve ser o mesmo nome da variável do formulário.

Em então experimente mudar o trecho de código :

  1. <?php 
  2.     $sex = new TDBCombo('sexo_atleta_id''sistemadb''Sexo''id''tipo_sexo');
  3.     // para 
  4.        $sexo_atleta_id = new TDBCombo('sexo_atleta_id''sistemadb''Sexo''id''tipo_sexo');
  5. ?>
JM

Igor no teu código também na olhei o use do namespace de lista ele tem que ser coloca já que não vai fazer a implementação do metodos onSearch() , onReload()

Veja o exemplo no Tutor https://www.adianti.com.br/framework_files/tutor/index.php?class=ProductList

segue o trecho do use:

  1. <?php
  2. use Adianti\Base\AdiantiStandardListTrait;
  3. ?>
JM

Igor no teu código também não olhei o use do namespace de lista ele tem que ser coloca já que não vai fazer a implementação do metodos onSearch() , onReload()

Veja o exemplo no Tutor https://www.adianti.com.br/framework_files/tutor/index.php?class=ProductList

segue o trecho do use:

  1. <?php
  2. use Adianti\Base\AdiantiStandardListTrait;
  3. ?>
IS

Boa noite, amigo!
Obrigado pelo feedback!

Ainda não deu certo, estou achando que é por causa do TStandardList, teria que ser TPage.
Vou testar e dou um retorno