IS
Problemas em filtrar dados no DataGrid com TDBCombo
Bom dia pessoal!
Estou com um problema para filtrar os dados no datagrid
Acredito que o problema seja no TDBCombo, mas não tenho ideia de como resolver.
Estou com um problema para filtrar os dados no datagrid
- <?php
- class AtletaList extends TStandardList
- {
- protected $form; // registration form
- protected $datagrid; // listing
- protected $pageNavigation;
- protected $formgrid;
- protected $deleteButton;
- protected $transformCallback;
- /**
- * Page constructor
- */
- public function __construct()
- {
- parent::__construct();
- parent::setDatabase('sistemadb'); // defines the database
- parent::setActiveRecord('Atleta'); // defines the active record
- parent::setDefaultOrder('nome_atleta', 'asc'); // defines the default order
- parent::addFilterField('id', '=', 'id'); // filterField, operator, formField
- parent::addFilterField('nome_atleta', 'like', 'name'); // filterField, operator, formField
- parent::addFilterField('pais_atleta_id', 'like', 'country'); // filterField, operator, formField
- parent::addFilterField('sexo_atleta_id', 'like', 'sex'); // filterField, operator, formField
- parent::addFilterField('idade_atleta', 'like', 'age'); // filterField, operator, formField
- parent::addFilterField('modalidade_id', 'like', 'modality'); // filterField, operator, formField
- // creates the form
- $this->form = new BootstrapFormBuilder('form_search_Atleta');
- $this->form->setFormTitle('Atleta');
- // create the form fields
- $id = new TEntry('id');
- $name = new TEntry('nome_atleta');
- $country = new TDBCombo('pais_atleta_id', 'sistemadb', 'Pais', 'id', 'cod_pais');
- $sex = new TDBCombo('sexo_atleta_id', 'sistemadb', 'Sexo', 'id', 'tipo_sexo');
- $age = new TEntry('idade_atleta');
- $modality = new TDBCombo('modalidade_id', 'sistemadb', 'Modalidade', 'id', 'nome_modalidade');
- //add the fields
- //$this->form->addFields( [new TLabel('Id')], [$id] );
- $this->form->addFields( [new TLabel('Nome do Atleta')], [$name] );
- $this->form->addFields( [new TLabel('País')], [$country] );
- $this->form->addFields( [new TLabel('Sexo')], [$sex] );
- $this->form->addFields( [new TLabel('Idade')], [$age] );
- $this->form->addFields( [new TLabel('Modalidade')], [$modality] );
- $id->setEditable(FALSE);
- $id->setSize('10%');
- $name->setSize('30%');
- $country->setSize('10%');
- $sex->setSize('10%');
- $age->setSize('20%');
- $modality->setSize('50%');
- // keep the form filled during navigation with session data
- $this->form->setData( TSession::getValue('Atleta_filter_data') );
- // add the search form actions
- $btn = $this->form->addAction(_t('Find'), new TAction(array($this, 'onSearch')), 'fa:search');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addAction(_t('New'), new TAction(array('AtletaForm', 'onEdit')), 'fa:plus green');
- // creates a DataGrid
- $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
- $this->datagrid->datatable = 'true';
- $this->datagrid->style = 'width: 100%';
- $this->datagrid->setHeight(320);
- // creates the datagrid columns
- //$column_id = new TDataGridColumn('id', 'Id', 'center', 50);
- $column_nome_atleta = new TDataGridColumn('nome_atleta', 'Nome do Atleta', 'left');
- $column_pais_atleta = new TDataGridColumn('pais_atleta->cod_pais', 'País', 'left');
- $column_sexo_atleta = new TDataGridColumn('sexo_atleta->tipo_sexo', 'Sexo', 'left');
- $column_idade_atleta = new TDataGridColumn('idade_atleta', 'Idade', 'left');
- $column_modalidade = new TDataGridColumn('modalidade->nome_modalidade', 'Modalidade', 'left');
- // add the columns to the DataGrid
- //$this->datagrid->addColumn($column_id);
- $this->datagrid->addColumn($column_nome_atleta);
- $this->datagrid->addColumn($column_pais_atleta);
- $this->datagrid->addColumn($column_sexo_atleta);
- $this->datagrid->addColumn($column_idade_atleta);
- $this->datagrid->addColumn($column_modalidade);
- // creates the datagrid column actions
- /*$order_id = new TAction(array($this, 'onReload'));
- $order_id->setParameter('order', 'id');
- $column_id->setAction($order_id);*/
- $order_nome_atleta = new TAction(array($this, 'onReload'));
- $order_nome_atleta->setParameter('order', 'nome_atleta');
- $column_nome_atleta->setAction($order_nome_atleta);
- $order_pais_atleta = new TAction(array($this, 'onReload'));
- $order_pais_atleta->setParameter('order', 'pais_atleta');
- $column_pais_atleta->setAction($order_pais_atleta);
- $order_sexo_atleta = new TAction(array($this, 'onReload'));
- $order_sexo_atleta->setParameter('order', 'sexo_atleta');
- $column_sexo_atleta->setAction($order_sexo_atleta);
- $order_idade_atleta = new TAction(array($this, 'onReload'));
- $order_idade_atleta->setParameter('order', 'idade_atleta');
- $column_idade_atleta->setAction($order_idade_atleta);
- $order_modalidade = new TAction(array($this, 'onReload'));
- $order_modalidade->setParameter('order', 'modalidade');
- $column_modalidade->setAction($order_modalidade);
- // create EDIT action
- $action_edit = new TDataGridAction(array('AtletaForm', 'onEdit'));
- $action_edit->setButtonClass('btn btn-default');
- $action_edit->setLabel(_t('Edit'));
- $action_edit->setImage('far:edit blue');
- $action_edit->setField('id');
- $this->datagrid->addAction($action_edit);
- // create DELETE action
- $action_del = new TDataGridAction(array($this, 'onDelete'));
- $action_del->setButtonClass('btn btn-default');
- $action_del->setLabel(_t('Delete'));
- $action_del->setImage('far:trash-alt red');
- $action_del->setField('id');
- $this->datagrid->addAction($action_del);
- // create the datagrid model
- $this->datagrid->createModel();
- // create the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->enableCounters();
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- $this->pageNavigation->setWidth($this->datagrid->getWidth());
- $panel = new TPanelGroup;
- $panel->add($this->datagrid);
- $panel->addFooter($this->pageNavigation);
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 100%';
- $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- $container->add($panel);
- parent::add($container);
- }
- }
- ?>
Acredito que o problema seja no TDBCombo, mas não tenho ideia de como resolver.
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 :
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:
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:
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