onEdit não funciona
Fechado
galera to terminando um sistema e reparei que alguns onEdit não funcionam, ele recupera os dados normal, porem ao salvar ele cria outro em vez de editar o existente alguem tem algum luz
o coltroller ta assim
o formulario
o coltroller ta assim
- <?php
- /** class de controle de funcionarios
- * author Alexandre E. Souza
- */
- class CargosView extends TStandardList{
- protected $grid;
- protected $panel;
- protected $fomt;
- protected $pagination;
- function __construct()
- {
- parent::__construct();
- parent::setDatabase('mysql');
- parent::setActiveRecord("Cargos");
- parent::setFilterField('nome');
- $this->form = new TQuickForm("Buscar Setores");
- $this->panel = new TPanel(800,600);
- $table = new TTable();
- $row = $table->addRow();
- $tabela = $table->addRow();
- $novo = $table->addRow();
- $campo = new TEntry('nome');
- $campo->setValue(TSession::getValue('nome'));
- $btnNovo = new TButton('novo');
- $btnNovo->setAction(new TAction(array('frmCargo','onEdit')),'Novo');
- $btnNovo->setImage('ico_new.png');
- $novo->addCell($btnNovo);
- $this->form->addQuickField("Nome:",$campo,100);
- $this->form->addQuickAction("Buscar",new TAction(array($this,"onSearch")),"ico_seek.png");
- $this->grid = new TQuickGrid();
- $this->grid->setHeight("400");
- $this->grid->addQuickColumn('ID','id','right',170);
- $this->grid->addQuickColumn('Nome','nome','left',230);
- $this->grid->addQuickColumn('Setor','setor','left',230);
- $this->grid->addQuickColumn('Salario Base','salario','left',230);
- $this->grid->addQuickColumn('Descricao','descricao','left',230);
- $this->grid->addQuickAction('Editar', new TDataGridAction(array('frmCargo','onEdit')),'id','ico_edit.png');
- $this->grid->addQuickAction('Deletar', new TDataGridAction(array($this,'onDelete')),'id','ico_delete.png');
- // $this->grid->addQuickAction('Novo', new TDataGridAction(array('frmVeiculos','__construct')),'ico_form.png');
- $cell = $row->addCell($this->form);
- $cell->colspan =2;
- $tabela->addCell($this->grid);
- $this->grid->createModel();
- $this->panel->put($table,50,10);
- // formulario
- parent::add($this->panel);
- }
- public function show(){
- parent::show();
- $this->onReload();
- }
- public function onReload(){
- $this->grid->Clear();
- try{
- TTransaction::open("mysql");// abre a transação
- $repo = new TRepository("Cargos");
- $criteria = new TCriteria();
- $criteria->add(new TFilter("id",">","0"));
- $veiculos = $repo->load($criteria);
- foreach ($veiculos as $key ) {
- $item = new StdClass();
- $item->id = $key->id;
- $item->nome = $key->nome;
- $item->salario = $key->salario;
- $item->setor = $key->getSetor()->nome;
- $item->descricao = $key->descricao;
- $this->grid->addItem($item);
- }
- TTransaction::close();// abre a transação
- }catch(Exeption $e){
- new TMessage('error',$e->getMessage());
- }
- }
- }
- ?>
o formulario
- <?php
- class frmCargo extends TStandardForm{
- protected $form;
- function __construct()
- {
- parent::__construct();
- parent::setDatabase("mysql");
- parent::setActiveRecord("Cargos");
- $this->form = new TQuickForm("Cargos");
- $nome = new TEntry('nome');
- $salario = new TEntry('salario');
- $descricao = new TText('descricao');
- $setor = new TDBCombo('setor_id','mysql','Setor','id','nome');
- $this->form->addQuickField('Nome:',$nome,200);
- $this->form->addQuickField('Salario:',$salario,200);
- $this->form->addQuickField('E-Mail:',$setor,200);
- $this->form->addQuickField('Descricao:',$descricao,200);
- //mascaras
- $salario->setMask('99999.99');
- $this->form->addQuickAction("Save",new TAction(array($this,"onSave")),"ico_save.png");
- $this->form->addQuickAction("Novo",new TAction(array($this,"onEdit")),"ico_new.png");
- $this->form->addQuickAction("Listar",new TAction(array("CargosView","onReload")),"ico_datagrid.gif");
- parent::add($this->form);
- }
- }
- ?>
Olá!
Verifique no seu formulário a presença do campo id, se esse campo não estiver presente ele sempre vai entender que deverá incluir um novo.
Veja o post: www.adianti.com.br/forum/pt/view_452?update-x-insert-nos-forms-gerad creio que é o mesmo problema que você está enfrentando.
abs
Eliezer
então colega Eliezer Silva
se eu colocar o campo id no form como irei fazer para pegar a sequencia, pois os ids são auto incrementos
Eliezer realmente era isso, mas tinha que aver uma maneira do campo d não precisar ser visivel para o usuario, mas funcionaou sim, vlw
Mas aí é muito fácil, se você não quer que o id apareça use o THidden em vez do TEntry, veja o exemplo:
Pronto!
Com certeza vai dar certo.
att.
Eliezer
VLW CARA DEU CERTINHO