MS
function onSearch() , buscar em varias colunas do datagrid.
Boa tarde,
Gostaria de uma ajudar sou um pouco leigo em desenvolvimento.
e gostaria de fazer um campo buscar no datagrid, onde ele busque dados de varias colunas do datagrid carregado.
Queria usar o campo buscar, para buscar exemplo do meu codigo logo abaixo, Buscar: $col_cliente ou $col_task.
e Buscar de mais de um campo Ex: Cliente, Task, Data Inicial.
Poderiam me ajudar como deveria fazer isso em meu codigo?
Agradeço desde já.
Gostaria de uma ajudar sou um pouco leigo em desenvolvimento.
e gostaria de fazer um campo buscar no datagrid, onde ele busque dados de varias colunas do datagrid carregado.
Queria usar o campo buscar, para buscar exemplo do meu codigo logo abaixo, Buscar: $col_cliente ou $col_task.
e Buscar de mais de um campo Ex: Cliente, Task, Data Inicial.
Poderiam me ajudar como deveria fazer isso em meu codigo?
Agradeço desde já.
- <?php
- class ChangeGrid extends TPage
- {
- private $form;
- private $datagrid;
- private $pageNavigation;
- private $loaded;
- public function __construct()
- {
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_search_City');
- $this->form->setFormTitle('Standard DataGrid');
- $buscar = new TEntry('buscar');
- $this->form->addFields( [new TLabel('Buscar:')], [$buscar] );
- // add form actions
- $this->form->addAction('Find', new TAction([$this, 'onSearch']), 'fa:search blue');
- $this->form->addActionLink('New', new TAction(['ChangeForm','onClear']), 'fa:plus-circle green');
- $this->form->addActionLink('Clear', new TAction([$this, 'clear']), 'fa:eraser red');
- // keep the form filled with the search data
- $this->form->setData( TSession::getValue('onSearch'));
- // creates one datagrid
- $this->datagrid = new BootstrapDatagridWrapper(new TQuickGrid);
- //$this->datagrid->style = 'min-width: 1600px';
- $this->datagrid->width = "100%";
- $col_cliente = new TDataGridColumn('cliente', 'Cliente', 'center', '10%');
- $col_change = new TDataGridColumn('change_id', 'Change', 'left','10%');
- $col_task = new TDataGridColumn('task_id', 'Task', 'left','10%');
- $col_hostaname = new TDataGridColumn('hostnames', 'Hostname', 'left','10%');
- $col_data_inicial = new TDataGridColumn( 'data_change_inicial', 'Data Inicial', 'left','10%');
- $col_data_final = new TDataGridColumn('data_change_final', 'Data Final', 'left','10%');
- $col_atividade = new TDataGridColumn('atividade', 'Atividade', 'left','10%');
- $col_st_atividade = new TDataGridColumn('status_atividade', 'Status de Atividade', 'left','10%');
- $col_st_change = new TDataGridColumn('status_change', 'Status da Change', 'left','10%');
- $col_coord = new TDataGridColumn('coordinator', 'Coordinator', 'left','10%');
- // add the columns
- $this->datagrid->addColumn($col_cliente);
- $this->datagrid->addColumn($col_change);
- $this->datagrid->addColumn($col_task);
- $this->datagrid->addColumn($col_hostaname);
- $this->datagrid->addColumn($col_data_inicial);
- $this->datagrid->addColumn($col_data_final);
- $this->datagrid->addColumn($col_atividade);
- $this->datagrid->addColumn($col_st_atividade);
- $this->datagrid->addColumn($col_st_change);
- $this->datagrid->addColumn($col_coord);
- $col_cliente->setAction( new TAction([$this, 'onReload']), ['order' => 'cliente']);
- $col_do_im->setAction( new TAction([$this, 'onReload']), ['order' => 'id_do_im']);
- $edit = new TDataGridAction(array ('ChangeForm', 'onEdit'));
- $this->datagrid->addQuickAction('Editar', $edit, 'id', 'ico_edit.png');
- // creates the datagrid model
- $this->datagrid->createModel();
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- $this->pageNavigation->setWidth($this->datagrid->getWidth());
- // wrap the page content using vertical box
- $vbox = new TVBox;
- $vbox->style = 'width: 100%';
- $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- //$vbox->add($panel);
- $vbox->add($this->form);
- $vbox->add(TPanelGroup::pack('', $this->datagrid, $this->pageNavigation)); // add a row for page navigation
- TTransaction::close(); // close transaction
- parent::add($vbox);
- }
- /**
- * Load the data into the datagrid
- */
- public function onReload($param = NULL)
- {
- try
- {
- TTransaction::open('sample');
- $repository = new TRepository('SystemChange');
- $limit = 10;
- $criteria = new TCriteria;
- if (empty($param['order']))
- {
- $param['order'] = 'id';
- $param['directi'] = 'asc';
- }
- $criteria->setProperties($param); // order, offset
- $criteria->setProperty('limit', $limit);
- if (TSession::getValue('Find_filter'))
- {
- // add the filter stored in the session to the criteria
- $criteria->add(TSession::getValue('Find_filter'));
- }
- $objects = $repository->load( $criteria );
- $this->datagrid->clear();
- if ($objects)
- {
- foreach($objects as $object)
- {
- $this->datagrid->addItem($object);
- }
- }
- $criteria->resetProperties();
- $count = $repository->count($criteria);
- $this->pageNavigation->setCount($count); // count of records
- $this->pageNavigation->setProperties($param); // order, page
- $this->pageNavigation->setLimit($limit); // limit
- TTransaction::close();
- $this->loaded = true;
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback(); // undo all pending operations
- }
- $this->loaded = TRUE;
- }
- function clear()
- {
- $this->form->clear();
- $this->onReload();
- }
- public function show()
- {
- if (!$this->loaded)
- {
- $this->onReload( func_get_arg(0) );
- }
- parent::show();
- }
- function onSearch()
- {
- // get the search form data
- $data = $this->form->getData($data);
- // check if the user has filled the form
- if (isset($data->buscar))
- {
- // creates a filter using what the user has typed
- $filter = new TFilter('buscar', 'like', "%{$data->buscar}%");
- // stores the filter in the session
- TSession::setValue('Find_filter', $filter);
- TSession::setValue('Buscar', $data->buscar);
- // fill the form with data again
- $this->form->setData($data);
- }
- $param = array();
- $param['offset'] =0;
- $param['first_page']=1;
- $this->onReload($param);
- }
- }
- </code>
Curso Dominando o Adianti Framework
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!
Dominando o Adianti Framework Quero me inscrever agora!
Em resumo a busca funciona assim: 1 - Ao clicar no botão Buscar vai para a função onSearch, que verifica os dados do formulário e salva essas informações na sessão. 2 - A função onReload, que é quem exibe as informações do banco de dados, verifica se há filtros na sessão para buscar os dados.
O caminho mais simples acredito que seja criar os vários filtros na função onSearch e agrupá-los em um criteria(fazendo um OR entre eles), sendo que esse criteria será salvo na sessão para ser utilizado como filtro principal:
Caríssimo Nataniel Rabaioli espero que estejas de bom animo.
Queira por favor me ajudar. Estou tentando fazer um relatório de venda, já tive iniciativa a partir das apostilas que adquiri ao comprar o pacote completo do Adiant Profissional.
No exemplo que está no livro mostra em DocumentHtmlPdfView e o PDFDesignReportView. Eu quero fazer com ambos, incluindo 2 tabelas ou mais. como é o caso de uma fatura de compra ou de venda entre as tabelas venda e itens da venda, apos o nome do produto, quantidade, total e o nome do cliente, tenha um button generate para gerar um relatorio em pdf.
Abaixo segue o formulario que pretendo que tenha um relatório.
Boa tarde Nataniel,
Primeiramente quero agradecer pela ajudar. Porem ainda estou com dificuldade de fazer o campo buscar funcionar:
No campo busca estou buscando meu nome como se fosse o cliente:
Ocorre o seguinte erro:
Classe ^1 não encontrada em AdiantiWidgetFormTForm::getData
File: libadiantiwrapperBootstrapFormBuilder.php : 252
AdiantiWidgetFormTForm->getData()
File: appcontrolprogramChangeGrid.class.php : 154
AdiantiWrapperBootstrapFormBuilder->getData()
File: :
ChangeGrid->onSearch(ChangeGrid,onSearch,MISAEl)
File: libadianticontrolTPage.php : 51
call_user_func(ChangeGrid,onSearch,ChangeGrid,onSearch,MISAEl)
File: libadianticontrolTPage.php : 205
AdiantiControlTPage->run()
File: appcontrolprogramChangeGrid.class.php : 196
AdiantiControlTPage->show()
File: libadianticoreAdiantiCoreApplication.php : 64
ChangeGrid->show(ChangeGrid,onSearch,MISAEl)
File: engine.php : 23
AdiantiCoreAdiantiCoreApplication::run(1)
File: engine.php : 65
TApplication::run(1)
O codigo:
Altere o seguinte: