Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Não consigo exibir o resultado do onSearch() Olá pessoal, Criei um DataGrid para listar os registros, funcionou perfeitamente a listagem e também o evento onEdit. Agora preciso fazer funcionar o onSearch. Para quando o usuário precisar pesquisar por um registro, o mesmo seja carregado no DataGrid. Códigos referentes ao DataGrid, onEdit, e onSearch: ...
EL
Não consigo exibir o resultado do onSearch()  
Olá pessoal,

Criei um DataGrid para listar os registros, funcionou perfeitamente a listagem e também o evento onEdit.

Agora preciso fazer funcionar o onSearch. Para quando o usuário precisar pesquisar por um registro, o mesmo seja carregado no DataGrid.

Códigos referentes ao DataGrid, onEdit, e onSearch:

  1. <?php
  2. class DisciplinaFormList extends TPage
  3. {
  4.     private $form;
  5.     private $datagrid;
  6.     private $pageNavigation;
  7.     private $loaded;
  8.     /**
  9.      * Construtor DisciplinaFormList
  10.      */
  11.     public function __construct()
  12.     {
  13.         parent::__construct();
  14.         // Criando formulário com bootstrap
  15.         $this->form = new BootstrapFormWrapper( new TQuickForm('form_pesquisar_disciplina'), 'form-vertical'); 
  16.         // Cria o campo para o formulário/tabela
  17.         $disciplina  = new TEntry('dis_disciplina');
  18.         // Adiciona o campo ao formulário
  19.         $this->form->addQuickField('Disciplina:',  $disciplina200);
  20.         // define the form actions
  21.         $pesquisa $this->form->addQuickAction('Pesquisar', new TAction(array($this'onSearch')), 'fa:search fa-search');
  22.         $pesquisa->class 'btn btn-primary';
  23.         $disciplina->setValue(TSession::getValue('descricao'));
  24.         $painel1 = new TPanelGroup('Pesquisar Disciplina');
  25.         $painel1->add($this->form);
  26.         // Criando o DataGrid
  27.         $this->datagrid = new BootstrapDatagridWrapper(new TQuickGrid);
  28.         $this->datagrid->style "width: 100%";
  29.         //$this->datagrid->setHeight(230);
  30.         $this->datagrid->addQuickColumn('ID''dis_id''right'100);
  31.         $this->datagrid->addQuickColumn('Disciplina''dis_descricao''left'400);
  32.         $this->datagrid->addQuickColumn('Carga Horária''dis_carga_horaria''left'100);
  33.         $this->datagrid->addQuickColumn('Ementa''dis_ementa''left'400);
  34.         // Ação editar no click do DataGrid
  35.         $editar = new TDataGridAction(array('DisciplinaFormCadastro''onEdit'));
  36.         $this->datagrid->addQuickAction('Editar'$editar'dis_id''fa:pencil fa-pencil');
  37.         // Cria o model DataGrid
  38.         $this->datagrid->createModel();
  39.         // Cria um painel com o título do formulário
  40.         $painel2 = new TPanelGroup('Lista de Disciplinas');
  41.         //$panel->style="width: 100%";
  42.         //$panel->add($this->form);
  43.         $painel2->add($this->datagrid);
  44.         $painel2->addFooter('Rodapé');
  45.         // Cria a página de navegação
  46.         $this->pageNavigation = new TPageNavigation;
  47.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  48.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  49.         // Container principal da página e BreadCrumb
  50.         $vbox = new TVBox;
  51.         $vbox->style 'width:100%';
  52.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  53.         $vbox->add($painel1);
  54.         $vbox->add($painel2);
  55.         $vbox->add($this->pageNavigation);
  56.         parent::add($vbox);
  57.     }
  58.     /**
  59.      * method onSearch()
  60.      * Register the filter in the session when the user performs a search
  61.      */
  62.     public function onSearch()
  63.     {
  64.         // get the search form data
  65.         $data $this->form->getData();
  66.         
  67.         // check if the user has filled the form
  68.         if (isset($data->dis_disciplina)) {
  69.             // creates a filter using what the user has typed
  70.             $filter = new TFilter('dis_disciplina''like'"%{$data->dis_disciplina}%");
  71.             // stores the filter in the session
  72.             TSession::setValue('filtro'$filter);
  73.             TSession::setValue('descricao'$data->dis_disciplina);
  74.             // fill the form with data again
  75.             $this->form->setData($data);
  76.         }
  77.         $param = array();
  78.         $param['offset'] = 0;
  79.         $param['first_page'] = 1;
  80.         $this->onReload($param);
  81.     }
  82.     public function onReload($param null)
  83.     {
  84.         try {
  85.             TTransaction::open('sample');
  86.             $repositorio = new TRepository('Disciplina'); 
  87.             $limit 10
  88.             $criterio = new TCriteria;
  89.             $objetos $repositorio->load($criterio);
  90.             $this->datagrid->clear();
  91.             if ($objetos) {
  92.                 foreach ($objetos as $obj) {
  93.                     $this->datagrid->addItem($obj);
  94.                 }
  95.             }
  96.             $count $repositorio->count($criterio);
  97.             $this->pageNavigation->setCount($count);
  98.             $this->pageNavigation->setLimit($limit); 
  99.             TTransaction::close();
  100.         } catch (Error $e) {
  101.             new TMessage('Erro'$e->getMessage());
  102.         }
  103.         $this->loaded true;
  104.     }
  105.     public function show()
  106.     {
  107.         if (!$this->loaded) {
  108.             $this->onReload();
  109.         }
  110.         parent::show(); // TODO: Change the autogenerated stub
  111.     }
  112. }
  113. ?>

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!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


LC

No onSearch apos o getData() , coloca:
TSession::setValue('filtro', NULL); // isso vai limpar o filtro caso o campo $data->dis_disciplina fique em branco

No onReload tem que ter o seguinte:
Entre esse: $criterio = new TCriteria;

Coloca:
if (TSession::getValue('filtro')){
$criterio.Add(TSession::getValue('filtro'));
}

e esse: $objetos = $repositorio->load($criterio);


Eu acho q é isso.

EL

Muito obrigado Leandro Coelho fiz as alterações e funcionou.