Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Desativar botão de ação dentro da datagrid Como faço para desativar um botão de ação dentro de uma data grid...estou usando como base o SaleForm do tutor, gostaria de fazer o seguinte, quando a pessoa aperto no button_edi; desativar o button_del e o button_edi e só ativar depois de gravar...Consigo fazer com os demais botões que estão fora da grid pelo método TButton::disableField('nome_do_form' , 'nome_do_btn')... porém não ...
JF
Desativar botão de ação dentro da datagrid  
Como faço para desativar um botão de ação dentro de uma data grid...estou usando como base o SaleForm do tutor, gostaria de fazer o seguinte, quando a pessoa aperto no button_edi; desativar o button_del e o button_edi e só ativar depois de gravar...Consigo fazer com os demais botões que estão fora da grid pelo método TButton::disableField('nome_do_form' , 'nome_do_btn')... porém não consigo com os botões da grid...Alguém tem alguma dica ?
Agradeço desde já.

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


NR

Você precisa passar um parâmetro na ação dos botões na função onReload identificando qual botão deve ser desativado:
  1. <?php
  2. //function onReload
  3. $action_del = new TAction(array($this'onDeleteItem'));
  4. $action_del->setParameter('list_product_id'$list_product_id);
  5. $action_del->setParameter('cont',$cont);//variavel $cont é usada no nome do botao, conforme linha abaixo
  6. ...
  7. //$button_del = new TButton('delete_product'.$cont);
  8. // function editItem
  9. TButton::disableField('nome_form','delete_product'.$param['cont']);
  10. ?>
JF

Valeu pela dica Natanael...mas ainda não deu certo, só consigo desativar dentro da função onReload...dentro da onEditItemProduto não encontra o parâmetro cont. O que estou fazendo de errado, não faltou nada no seu código ?

public function onEditItemProduto( $param )
{
TButton::disableField('customform', 'action1');//calcula taxa
TButton::disableField('customform','delete_product'.$param['cont']);
}
** ERRO Undefined index: cont in
?>
NR

No post anterior usei como exemplo a passagem do parâmetro 'cont' para a ação de delete, mas você precisa passar para a ação de edição:
  1. <?php
  2. $action_edi->setParameter('cont',$cont);
  3. ?>
JF

Valeu Nataniel...agora deu tudo certo, perfeito...faltava setar o parâmetro cont mesmo. Abraços
JF

Outra dúvida ...como faço pra desativar a ação de todos os registro não só do registro que vem como parâmetro n cont, pq desse jeito só desativa a ação de um registro na grid; gostaria que desativasse de todos. Como faço ?
NR

Faça um for de 1 até o número de itens:
  1. <?php
  2. $total_itens count($sale_items);//sale_items é a variavel que pega os itens salvos na sessao
  3. for($i=1;$i<=$total_itens;$i++)
  4. {
  5.      TButton::disableField('form_Sale','delete_product'.$i);
  6.      TButton::disableField('form_Sale','edit_product'.$i);
  7. }
  8. ?>
JF

Valeu mesmo pela ajuda Nataniel, tudo perfeito mano veio....Abração
JF

Tive que acrescentar + 1 ao contador pq sempre ficava disponível o último registro pra clique ...por fim era isso, vou deixa o código a baixo pra quem tiver o mesmo problema que eu. Valeu Abraços.

  1. <?php
  2.        
  3.         $total_itens count($sale_items);//sale_items é a variavel que pega os itens salvos na sessao
  4.     $total_itens $total_itens ;
  5.     for($i=1$i <= $total_itens$i++)
  6.     {
  7.         TButton::disableField('customform','delete_product'.$i);
  8.         TButton::disableField('customform','edit_product'.$i);
  9.             
  10.     }    
  11. ?>
WR

Bom dia!!

Como eu sei o nome que o Adianti gera para o botão de ação no datagrid??
Gostaria de desabilitar o botão no datagrid, conforme exemplo a baixo.

  1. <?php
  2. TButton::disableField('nome_form','NOME_BOTAO'.$param['cont']);
  3. ?>


Esse é meu código para ação do datagrid,eu não estou setando nome do botão
  1. <?php
  2.        $action2 = new TDataGridAction([$this'onDelete']);
  3.         $action2->setUseButton(TRUE);
  4.         $action2->setButtonClass('btn btn-default');
  5.         $action2->setLabel(_t('Delete'));
  6.         $action2->setImage('fa:trash-o red fa-lg');
  7.         $action2->setField('id');
  8.         $action2->setDisplayCondition( array($this'displayColumn') );
  9. ?>