VB
Abrir FormList com registros filtrados
Fechado
Pessoal,
Tenho um FormList onde quero abrir o formulário com os registros da List já filtrados pela coluna idperiodo. O valor a ser filtrado está na session.
Faço isso na mão com o TCriteria? Ou tem algum método que eu possa usar no construtor? Vi que tem um parent::setFilterField(), mas não sei passar valor pra ele.
PS. Gerei o formulário pelo modelo "Padrão" do Studio.
Desde já agradeço.
Tenho um FormList onde quero abrir o formulário com os registros da List já filtrados pela coluna idperiodo. O valor a ser filtrado está na session.
Faço isso na mão com o TCriteria? Ou tem algum método que eu possa usar no construtor? Vi que tem um parent::setFilterField(), mas não sei passar valor pra ele.
PS. Gerei o formulário pelo modelo "Padrão" do Studio.
Desde já agradeço.
- <?php
- /**
- * TurmaFormList Registration
- * @author Vanilson Araujo
- */
- class TurmaFormList extends TStandardFormList
- {
- protected $form; // form
- protected $datagrid; // datagrid
- protected $pageNavigation;
- /**
- * Class constructor
- * Creates the page and the registration form
- */
- function __construct()
- {
- parent::__construct();
- parent::setDatabase('dbcollegio'); // defines the database
- parent::setActiveRecord('Turma'); // defines the active record
- parent::setDefaultOrder('idserie,descricao', 'asc'); // defines the default order
- // creates the form
- $this->form = new TQuickForm('form_Turma');
- $this->form->class = 'tform'; // CSS class
- $this->form->setFormTitle('Turma'); // define the form title
- // create the form fields
- 1222turma = new TEntry('idturma');
- 1222serie = new TDBCombo('idserie','dbcollegio','Serie','idserie','descricao_cursoserie','descricao');
- $descricao = new TEntry('descricao');
- $capacidade = new TEntry('capacidade');
- $turno = new TCombo('turno');
- 1222periodo = new THidden('idperiodo');
- //1222periodo = new TDBCombo('idperiodo','dbcollegio','Periodo','idperiodo','descricao');
- $sala = new TEntry('sala');
- $localizacao = new TEntry('localizacao');
- // custom
- 1222turma->setEditable(FALSE);
- $turno->addItems(array( 'Manhã'=>'Manhã','Tarde'=>'Tarde','Noite'=>'Noite'));
- //1222periodo = $combo_periodo->idperiodo;
- 1222periodo->setValue(TSession::getValue('var_idperiodo'));
- // add the fields
- $this->form->addQuickField('Id', 1222turma, 50);
- $this->form->addQuickField('Série', 1222serie, 400);
- $this->form->addQuickField('Turma', $descricao, 100);
- $this->form->addQuickField('Turno', $turno, 100);
- $this->form->addQuickField('Período', 1222periodo, 200);
- $this->form->addQuickField('Sala', $sala, 50);
- $this->form->addQuickField('Localização', $localizacao, 100);
- $this->form->addQuickField('Capacidade Sala', $capacidade, 50);
- // create the form actions
- $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'ico_save.png');
- $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'ico_new.png');
- // creates a DataGrid
- $this->datagrid = new TQuickGrid;
- $this->datagrid->setHeight(320);
- // creates the datagrid columns
- 1222turma = $this->datagrid->addQuickColumn('Id', 'idturma', 'left', 100);
- 1222serie = $this->datagrid->addQuickColumn('Série', 'serie->descricao', 'left', 100);
- $descricao = $this->datagrid->addQuickColumn('Turma', 'descricao', 'left', 200);
- //$capacidade = $this->datagrid->addQuickColumn('capacidade', 'capacidade', 'left', 100);
- $turno = $this->datagrid->addQuickColumn('turno', 'turno', 'left', 200);
- 1222periodo = $this->datagrid->addQuickColumn('idperiodo', 'periodo->descricao', 'left', 100);
- $sala = $this->datagrid->addQuickColumn('sala', 'sala', 'left', 200);
- $localizacao = $this->datagrid->addQuickColumn('localizacao', 'localizacao', 'left', 200);
- // create the datagrid actions
- $edit_action = new TDataGridAction(array($this, 'onEdit'));
- $delete_action = new TDataGridAction(array($this, 'onDelete'));
- // add the actions to the datagrid
- $this->datagrid->addQuickAction(_t('Edit'), $edit_action, 'idturma', 'ico_edit.png');
- $this->datagrid->addQuickAction(_t('Delete'), $delete_action, 'idturma', 'ico_delete.png');
- // create the datagrid model
- $this->datagrid->createModel();
- // creates the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- $this->pageNavigation->setWidth($this->datagrid->getWidth());
- // create the page container
- $container = TVBox::pack( $this->form, $this->datagrid, $this->pageNavigation);
- parent::add($container);
- }
- }
Vanilson,
A FormList não tem um método setCriteria() da mesma maneira que a TStandardList tem.
Na TStandardList, você pode chamar parent::setCriteria() para definir um filtro na datagrid.
Anotei aqui para implementar isso.
Att,
Pablo
Você terá de sobrecarregar o método onReload() por enquanto...
Att,
Pablo
OK Pablo, obrigado.