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
Quando coloco o filtro por vendedor_id:
Além de não filtrar, o campo check deixa de aparecer na grid.
Podem me ajudar ?
Obrigado.
O meu problema é que não estou conseguindo colocar um filtro na grid
- <?php
- public function onReload( $param = NULL )
- {
- // update the post action parameters to pass
- // offset, limit, page and other info in
- // order to preserve the pagination after post
- $this->postAction->setParameters($param); // important!
- return parent::onReload( $param );
- }
- /**
- * Transform the objects before load them into the datagrid
- */
- public function onBeforeLoad( $objects )
- {
- TTransaction::open('dbaerp');
- //----------------------------------------------------------
- $user_id='';
- $user_name ='';
- $user = SystemUser::newFromLogin(TSession::getValue('login') );
- if ($user)
- {
- $user_id = $user->id;
- $user_name = $user->name;
- $vendedor_id = $user->vendedor_id;
- }
- if (!empty($vendedor_id))
- {
- $objects = Pedido::where('vendedor_id', '=', $vendedor_id)
- ->load();
- }
- TTransaction::close();
- foreach ($objects as $object)
- {
- $object->check = new TCheckButton('check_'.$object->id);
- $object->check->setIndexValue('on');
- $this->form->addField($object->check); // important!
- }
- }
- ?>
Quando coloco o filtro por vendedor_id:
- <?php
- if (!empty($vendedor_id))
- {
- // $criteria->add(new TFilter('vendedor_id', '=', $vendedor_id));
- $objects = Pedido::where('vendedor_id', '=', $vendedor_id)
- ->load();
- }
- ?>
Além de não filtrar, o campo check deixa de aparecer na grid.
Podem me ajudar ?
Obrigado.
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');
Obrigado Felipe!
Com a sua sugestão ficou melhor, só que surgiram outros problemas.
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.