Lançado Adianti Framework 7.6!
Clique aqui para saber mais
onEdit não funciona 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 ...
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


  1. <?php 
  2. /** class de controle de funcionarios
  3. * author Alexandre E. Souza
  4. */
  5. class CargosView extends TStandardList{
  6.     
  7.     protected $grid;
  8.     protected $panel;
  9.     protected $fomt;
  10.     protected $pagination;
  11.  
  12.     function __construct()
  13.     {
  14.         parent::__construct();
  15.         parent::setDatabase('mysql');
  16.         parent::setActiveRecord("Cargos");
  17.         parent::setFilterField('nome');
  18.         
  19.              $this->form = new TQuickForm("Buscar Setores");
  20.    $this->panel = new TPanel(800,600);
  21.    $table = new TTable();
  22. $row $table->addRow();
  23. $tabela $table->addRow();
  24. $novo $table->addRow();
  25.    $campo = new TEntry('nome');
  26.    $campo->setValue(TSession::getValue('nome'));
  27.    $btnNovo = new TButton('novo');
  28.    $btnNovo->setAction(new TAction(array('frmCargo','onEdit')),'Novo');
  29.    $btnNovo->setImage('ico_new.png');
  30.    $novo->addCell($btnNovo);
  31. $this->form->addQuickField("Nome:",$campo,100);
  32.  $this->form->addQuickAction("Buscar",new TAction(array($this,"onSearch")),"ico_seek.png");
  33.        $this->grid = new TQuickGrid();
  34.         $this->grid->setHeight("400");
  35.         $this->grid->addQuickColumn('ID','id','right',170);
  36.         $this->grid->addQuickColumn('Nome','nome','left',230);
  37.           $this->grid->addQuickColumn('Setor','setor','left',230);
  38.                  $this->grid->addQuickColumn('Salario Base','salario','left',230);
  39.          $this->grid->addQuickColumn('Descricao','descricao','left',230);
  40.           $this->grid->addQuickAction('Editar', new TDataGridAction(array('frmCargo','onEdit')),'id','ico_edit.png');
  41.            $this->grid->addQuickAction('Deletar', new TDataGridAction(array($this,'onDelete')),'id','ico_delete.png');
  42.         //  $this->grid->addQuickAction('Novo', new TDataGridAction(array('frmVeiculos','__construct')),'ico_form.png');
  43.           
  44.  $cell $row->addCell($this->form);
  45.  $cell->colspan =2;
  46.  $tabela->addCell($this->grid);
  47.  $this->grid->createModel();
  48. $this->panel->put($table,50,10);
  49. // formulario
  50. parent::add($this->panel);
  51. }
  52. public function show(){
  53.     parent::show();
  54.     $this->onReload();
  55. }
  56.     public function onReload(){
  57.  $this->grid->Clear();
  58.  
  59.          try{
  60.             TTransaction::open("mysql");// abre a transação
  61. $repo =  new TRepository("Cargos");
  62. $criteria = new TCriteria();
  63. $criteria->add(new TFilter("id",">","0"));
  64.                  $veiculos =  $repo->load($criteria);
  65.   
  66. foreach ($veiculos as $key ) {
  67. $item = new StdClass();
  68. $item->id $key->id;
  69. $item->nome $key->nome;
  70. $item->salario $key->salario;
  71. $item->setor $key->getSetor()->nome;
  72. $item->descricao $key->descricao;
  73.  $this->grid->addItem($item);
  74.  
  75. }
  76.       TTransaction::close();// abre a transação
  77.             
  78.         }catch(Exeption $e){
  79.             new TMessage('error',$e->getMessage());
  80.         }
  81.     }
  82. }
  83. ?>


o formulario

  1. <?php
  2. class frmCargo extends TStandardForm{
  3.  
  4.     
  5.     protected $form;
  6.     
  7.     function __construct()
  8.     {
  9.         parent::__construct();
  10.         
  11.         
  12.      parent::setDatabase("mysql");
  13.         parent::setActiveRecord("Cargos");
  14.         
  15.         
  16.         $this->form = new TQuickForm("Cargos");
  17.         
  18.         
  19.         $nome = new TEntry('nome');
  20.         $salario = new TEntry('salario');
  21.            $descricao = new TText('descricao');
  22.       $setor = new TDBCombo('setor_id','mysql','Setor','id','nome');
  23.         
  24.         $this->form->addQuickField('Nome:',$nome,200);
  25.          $this->form->addQuickField('Salario:',$salario,200);
  26.                  $this->form->addQuickField('E-Mail:',$setor,200);
  27.         $this->form->addQuickField('Descricao:',$descricao,200);
  28.  
  29.  //mascaras
  30.  
  31.  $salario->setMask('99999.99');
  32.      
  33.         
  34.         
  35.         
  36.         $this->form->addQuickAction("Save",new TAction(array($this,"onSave")),"ico_save.png");
  37.         $this->form->addQuickAction("Novo",new TAction(array($this,"onEdit")),"ico_new.png");
  38.         $this->form->addQuickAction("Listar",new TAction(array("CargosView","onReload")),"ico_datagrid.gif");
  39.         
  40.         
  41.         
  42.         
  43.         
  44.         
  45.         parent::add($this->form);
  46.     }
  47.     
  48. }
  49. ?>



Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (5)


ES

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
ES

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:

  1. <?php $id = new THidden('id'); ?>


Pronto!
Com certeza vai dar certo.

att.
Eliezer

VLW CARA DEU CERTINHO