Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Ao excluir um registro no datagrid, obter valor de um campo Boa tarde amigos! Tenho form Mestre x Detalhe e quando clicar na opção Excluir um registro presente no Datagrid, preciso obter o valor de um campo específico. Preciso incluir essa solução no código abaixo. public static function onDeleteDetail( $param ) { // reset items $data = new stdClass; $data->detail_item_pk = ''...
CN
Ao excluir um registro no datagrid, obter valor de um campo  
Boa tarde amigos!

Tenho form Mestre x Detalhe e quando clicar na opção Excluir um registro presente no Datagrid, preciso obter o valor de um campo específico. Preciso incluir essa solução no código abaixo.

public static function onDeleteDetail( $param )
{

// reset items
$data = new stdClass;
$data->detail_item_pk = '';
$data->detail_tipo_unidade = '';
$data->detail_lote = '';
$data->detail_custo_cliente = '';
$data->detail_qtd = '';
$data->detail_total = '';

// clear form data
TForm::sendData('form_TbprocedimentoRealizado', $data );

// read session items
$items = TSession::getValue(__CLASS__.'_items');

// get detail id
$detail_id = $param['key'];

// delete the item from session
unset($items[ $detail_id ] );

// rewrite session items
TSession::setValue(__CLASS__.'_items', $items);

// delete item from screen
TScript::create("ttable_remove_row_by_id('TbprocedimentoRealizado_list', '{$detail_id}')");
}

Obrigado AG

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


MG

Cesar, poderia explicar melhor?
Qual campo?
CN

Eu tenho um formulário mestre/detalhe.
Exemplo:
form MESTRE: Para fazer uma ATIVIDADE, o CUSTO TOTAL será de R$ 100,00
form DETALHE, será lançado 4 itens no valor de R$ 25,00 cada.

Agora, quando o usuário deletar um ou mais item(ns), o valor de R$ 100,00 (CUSTO TOTAL) deverá ser atualizado.
MG

Cesar e o campo a ser exibido estiver no MESTRE, basta criar um método estático cujo o objeto é atualizar este campo com o conteúdo dos itens.
E no Delete você chama este método.
CN

Quase lá. rs

Usando o método estático, como faço para acessar o valor de uma coluna no datagrid quando clicar em cima de um registro?
MG

Minha sugestão seria passar para o id do pedido para método estático.
O método acessaria a tabela de detalhes e faria a soma dos itens que ainda existem lá, isso após o commit da transação, que seria após o TTransaction::close().

Não sei como está seu código, mas você acessaria seu método como self:

self::seu_metodo($numero_pedido)
CN

O Registro Retalhe ainda não foi Salvo no banco, apenas adicionado no Grid pelo botão adicionar presente no form Detalhe. E aí está minha dificuldade: Preciso acessar o valor da coluna total de cada linha (registro) do grid no momento que eu clicar no botão Excluir do grid.

Valeu.
NR

Os detalhes ficam gravados em um array na sessão. Ao deletar, esse array é atualizado.
  1. <?php
  2. // trecho responsável por atualizar sessão
  3. // rewrite session items
  4. TSession::setValue(__CLASS__.'_items'$items);
  5. // dentro da função onDeleteDetail você pode usar diretamente a variável $items
  6. foreach ($items ...
  7. ?>
CN

Ok. Consegui!! Obrigado!!!!
Agora, para encerrar, como faço para obter o valor do campo CUSTO_TOTAL que está no form Mestre a partir daí desse ponto Nataniel? Só lembrando: o usuário não terá Salvo ainda o registro no banco de dados, ou seja, os valores estão contidos apenas no form.

Obrigado!
NR

Teoricamente o valor de todos os campos do form estão em $param. Mas se você vai atualizar esse campo a partir dos detalhes, por que precisa obter o valor dele?
CN

No form Master tenho o TDBcombo Atividade e de acordo com a Atividade selecionada, tenho um Valor (esse valor é independente do custos dos itens). Quanto a composição dos itens é variado, mesmo para a mesma Atividade! Logo, o Custo Total no form Master precisa ser atualizado.