Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Edição inline não edita e cria outro registro com a alteração Preciso de ajuda para entender o que está acontecendo: Com base no código disponibilizado no tutor ajustei o código conforme abaixo para realizar edição inline. É inserido a alteração na linha da datagrid, e após alterar o campo nome aparece a msg "Record Update", porém ao invés de salvar o que foi alterado, simplesmente após editar o nome do cliente é criado um novo registro (valo...
ML
Edição inline não edita e cria outro registro com a alteração  
Fechado
Preciso de ajuda para entender o que está acontecendo:

Com base no código disponibilizado no tutor ajustei o código conforme abaixo para realizar edição inline. É inserido a alteração na linha da datagrid, e após alterar o campo nome aparece a msg "Record Update", porém ao invés de salvar o que foi alterado, simplesmente após editar o nome do cliente é criado um novo registro (valor do campo alterado + alteração inserida).

  1. <?php
  2. class ListaClienteForm extends TStandardList
  3. {
  4.     protected $form;     
  5.     protected $datagrid
  6.     protected $pageNavigation;
  7.     
  8.     public function __construct()
  9.     {
  10.         parent::__construct();
  11.         
  12.         parent::setDatabase('conectabd');        
  13.         parent::setActiveRecord('Cliente');      
  14.         parent::setFilterField('nome_cliente');        
  15.         parent::setDefaultOrder('id_cliente''asc');  
  16.         
  17.         $this->form = new TQuickForm('form_busca_cliente');
  18.         $this->form->setFormTitle('Buscar Cliente');
  19.         $this->form->class 'tform';
  20.         $this->form->style 'width: 500px';
  21.         $nome_cliente = new TEntry('nome_cliente');
  22.         
  23.         $this->form->addQuickField'Nome:'$nome_cliente200 );
  24.         $this->form->addQuickAction('Buscar', new TAction(array($this'onSearch')), 'ico_find.png');
  25.         $this->form->addQuickAction('Novo',  new TAction(array('ClienteForm''onEdit')), 'ico_new.png');
  26.         
  27.         $this->form->setDataTSession::getValue('Nome_filter_data') );
  28.    
  29.         $this->datagrid = new TQuickGrid;
  30.         $this->datagrid->setHeight(230);
  31.         
  32.         $this->datagrid->addQuickColumn('ID''id_cliente''right'40, new TAction(array($this'onReload')), array('order''id_cliente'));
  33.         $nome_cliente $this->datagrid->addQuickColumn('Nome''nome_cliente''left'400, new TAction(array($this'onReload')), array('order''nome_cliente'));
  34.         $this->datagrid->addQuickAction('Edit', new TDataGridAction(array('ClienteForm''onEdit')), 'id_cliente''ico_edit.png');
  35.         $this->datagrid->addQuickAction('Delete', new TDataGridAction(array($this'onDelete')), 'id_cliente''ico_delete.png');
  36.         
  37.         $editaction = new TDataGridAction(array($this'onInlineEdit'));
  38.         $editaction->setField('nome_cliente');
  39.         $nome_cliente->setEditAction($editaction);
  40.         
  41.         $this->datagrid->createModel();
  42.         
  43.         $this->pageNavigation = new TPageNavigation;
  44.         $this->pageNavigation->setAction(new TAction(array($this'onReload')));
  45.         $this->pageNavigation->setWidth($this->datagrid->getWidth());
  46.         
  47.         $table = new TTable;
  48.         $table->addRow()->addCell($this->form);
  49.         $table->addRow()->addCell($this->datagrid);
  50.         $table->addRow()->addCell($this->pageNavigation);
  51.         
  52.         parent::add($table);
  53.     }
  54. }
  55. ?>


E quando clico em qualquer linha da datagrid ou no botão editar para ser redirecionado para o formulário de cadastro de cliente não vem carregado com as informações que desejo editar. Ao tentar excluir, mesmo exibindo a msg de exclusão com sucesso o registro não é excluído.

Desde já agradeço muito se alguém puder me ajudar.

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


FC

Corrija essa linha, é preciso passar o id para fazer o edit VC está passando o nome_cliente

$editaction->setField('id_cliente');

ML

Felipe,

Fiz a correção da linha, mas nada mudou.

Atc,

Marcelo.
ML

O problema em questão foi resolvido com ajuda do Felipe.

Model antigo com erro:
  1. <?php
  2. class Cliente extends TRecord
  3. {
  4.    const TABLENAME  'tbclientes';
  5.    const PRIMARYKEY 'id_cliente';
  6.    const IDPOLICY   'max';
  7.    
  8.    public function __construct($id NULL)
  9.    {
  10.        parent::addAttribute('nome_cliente');
  11.        parent::addAttribute('tel_cliente');
  12.        parent::addAttribute('endereco_cliente');
  13.        parent::addAttribute('ponto_ref');
  14.        parent::addAttribute('data_nasc_cliente');
  15.    
  16.    } 
  17. }
  18. ?>


Model atual corrigido pelo Felipe

  1. <?php
  2.     class Cliente extends TRecord
  3.     {
  4.        const TABLENAME  'tbclientes';
  5.        const PRIMARYKEY 'id_cliente';
  6.        const IDPOLICY   'max';
  7.        
  8.       public function __construct($id NULL$callObjectLoad TRUE// erro nessa linha
  9.        {
  10.            parent::__construct($id$callObjectLoad); // falta essa linha
  11.            parent::addAttribute('nome_cliente');
  12.            parent::addAttribute('tel_cliente');
  13.            parent::addAttribute('endereco_cliente');
  14.            parent::addAttribute('ponto_ref');
  15.            parent::addAttribute('data_nasc_cliente');
  16.        
  17.        } 
  18.     }
  19.     ?>