Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Inserir um filtro. Olá, estou usando um formulário com TCheckButton() baseado no exemplo do tutor http://www.adianti.com.br/framework_files/tutor/index.php?class=MultiCheckView&method=onReload O meu problema é que não estou conseguindo colocar um filtro na grid ...
AR
Inserir um filtro.  
Olá, estou usando um formulário com TCheckButton() baseado no exemplo do tutor www.adianti.com.br/framework_files/tutor/index.php?class=MultiCheckV

O meu problema é que não estou conseguindo colocar um filtro na grid

  1. <?php
  2.     public function onReload$param NULL )
  3.     {
  4.     
  5.          
  6.         // update the post action parameters to pass
  7.         // offset, limit, page and other info in
  8.         // order to preserve the pagination after post
  9.         $this->postAction->setParameters($param); // important!
  10.         
  11.         return parent::onReload$param );
  12.     }
  13.     
  14.     /**
  15.      * Transform the objects before load them into the datagrid
  16.      */
  17.  
  18.    public function onBeforeLoad$objects )
  19.     {
  20.     
  21.     
  22.           TTransaction::open('dbaerp');
  23.             
  24.             
  25.       //----------------------------------------------------------
  26.            $user_id='';
  27.            $user_name ='';
  28.            
  29.            $user SystemUser::newFromLogin(TSession::getValue('login') );
  30.              if ($user)
  31.                {
  32.                 $user_id   $user->id;
  33.                 $user_name $user->name;
  34.                 $vendedor_id $user->vendedor_id;
  35.                }
  36.             if (!empty($vendedor_id)) 
  37.                {
  38.                   $objects Pedido::where('vendedor_id''='$vendedor_id)
  39.                                  ->load();
  40.                 }
  41.        TTransaction::close();
  42.  
  43.     
  44.         foreach ($objects as $object)
  45.         {
  46.             $object->check = new TCheckButton('check_'.$object->id);
  47.             $object->check->setIndexValue('on');
  48.             $this->form->addField($object->check); // important!
  49.         }
  50.    
  51.         
  52.     }
  53.     
  54.  
  55.  ?>


Quando coloco o filtro por vendedor_id:

  1. <?php
  2.   if (!empty($vendedor_id)) 
  3.                {
  4.                // $criteria->add(new TFilter('vendedor_id', '=',  $vendedor_id));
  5.                    $objects Pedido::where('vendedor_id''='$vendedor_id)
  6.                                  ->load();
  7.                 }
  8.  ?>


Além de não filtrar, o campo check deixa de aparecer na grid.

Podem me ajudar ?

Obrigado.

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


FC

Ola Adriano, eu criei um exemplo que filtra no TCheckList muito parecido com que vc quer.
felipecortez.kinghost.net/tutor7/index.php?class=FormCheckListView

Mas na sua classe, o filtro é feito em cima da classe pois ela é uma TStandardList olha essa parte:
$this->addFilterField('customer_id', '=', 'customer_id');
AR

Obrigado Felipe!

Com a sua sugestão ficou melhor, só que surgiram outros problemas.

  1. <?php
  2.         $cliente->setMinLength(1);
  3.         $this->order_list->addColumn('id',          'Id',          'center',  '10%');
  4.         $this->order_list->addColumn('cliente->nome''Cliente''left',      '50%');
  5.         $this->order_list->addColumn('vendedor->nome''Vendedor''left',    '10%');
  6.         $this->order_list->addColumn('estado_pedido->nome''Estado''left''10%'); 
  7.         $this->order_list->addColumn('dt_pedido''Dt pedido''left''10%'); 
  8.         $this->order_list->addColumn('valor_total''Valor total''left''10%');  
  9. ?>


1 - Não consigo chamar o nome do cliente (da classe Pessoa)
erro:
Sem transação ativa com a base de dados:
AdiantiDatabaseTRecord::load
Pessoa

Sem transação ativa com a base de dados:
AdiantiDatabaseTRecord::load
Vendedor

Desta maneira, como posso ativar a base de dados no formulário uma vez que não posso usar:
parent::setDatabase('banco'); // defines the database
parent::setActiveRecord('Pedido'); // defines the active record

Muito obrigado.