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).
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.
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).
- <?php
- class ListaClienteForm extends TStandardList
- {
- protected $form;
- protected $datagrid;
- protected $pageNavigation;
- public function __construct()
- {
- parent::__construct();
- parent::setDatabase('conectabd');
- parent::setActiveRecord('Cliente');
- parent::setFilterField('nome_cliente');
- parent::setDefaultOrder('id_cliente', 'asc');
- $this->form = new TQuickForm('form_busca_cliente');
- $this->form->setFormTitle('Buscar Cliente');
- $this->form->class = 'tform';
- $this->form->style = 'width: 500px';
- $nome_cliente = new TEntry('nome_cliente');
- $this->form->addQuickField( 'Nome:', $nome_cliente, 200 );
- $this->form->addQuickAction('Buscar', new TAction(array($this, 'onSearch')), 'ico_find.png');
- $this->form->addQuickAction('Novo', new TAction(array('ClienteForm', 'onEdit')), 'ico_new.png');
- $this->form->setData( TSession::getValue('Nome_filter_data') );
- $this->datagrid = new TQuickGrid;
- $this->datagrid->setHeight(230);
- $this->datagrid->addQuickColumn('ID', 'id_cliente', 'right', 40, new TAction(array($this, 'onReload')), array('order', 'id_cliente'));
- $nome_cliente = $this->datagrid->addQuickColumn('Nome', 'nome_cliente', 'left', 400, new TAction(array($this, 'onReload')), array('order', 'nome_cliente'));
- $this->datagrid->addQuickAction('Edit', new TDataGridAction(array('ClienteForm', 'onEdit')), 'id_cliente', 'ico_edit.png');
- $this->datagrid->addQuickAction('Delete', new TDataGridAction(array($this, 'onDelete')), 'id_cliente', 'ico_delete.png');
- $editaction = new TDataGridAction(array($this, 'onInlineEdit'));
- $editaction->setField('nome_cliente');
- $nome_cliente->setEditAction($editaction);
- $this->datagrid->createModel();
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- $this->pageNavigation->setWidth($this->datagrid->getWidth());
- $table = new TTable;
- $table->addRow()->addCell($this->form);
- $table->addRow()->addCell($this->datagrid);
- $table->addRow()->addCell($this->pageNavigation);
- parent::add($table);
- }
- }
- ?>
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.
Corrija essa linha, é preciso passar o id para fazer o edit VC está passando o nome_cliente
$editaction->setField('id_cliente');
Felipe,
Fiz a correção da linha, mas nada mudou.
Atc,
Marcelo.
O problema em questão foi resolvido com ajuda do Felipe.
Model antigo com erro:
Model atual corrigido pelo Felipe