Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Enviar dados para Field List no método onEdit Olá pessoal, Se for para enviar os dados diretamente ao campos do field list é tranquilo, mas no caso de um TCombo que depende dos dados de um TDBCombo, não consegui fazer funcionar, pois os dados são inseridos por meio do método addDetail do Field List e este não aciona o método onChange. tentei pegar o nome dos campos da Field List para acionar o onChange manualmente, mas tbm não c...
BI
Enviar dados para Field List no método onEdit  
Olá pessoal,
Se for para enviar os dados diretamente ao campos do field list é tranquilo,
mas no caso de um TCombo que depende dos dados de um TDBCombo, não consegui fazer funcionar,
pois os dados são inseridos por meio do método addDetail do Field List e este não aciona o método onChange.
tentei pegar o nome dos campos da Field List para acionar o onChange manualmente, mas tbm não consegui.

 
  1. <?php
  2. public function onEdit( $param )
  3. {
  4. try
  5. {
  6. if (isset($param['key']))
  7. {
  8. $key = $param['key']; // get the parameter $key
  9. TTransaction::open('sqlserver'); // open a transaction
  10. $object = new liberacao($key); // instantiates the Active Record
  11. if ($object->status == 1){
  12. $action = new TAction(array('liberacaoList','onReload'));
  13. new TMessage('Error','PES Aprovado! Não é possivel fazer alteração!', $action);
  14. die();
  15. }elseif($object->status == 2){
  16. $action = new TAction(array('liberacaoList','onReload'));
  17. new TMessage('Error','PES Cancelado! Não é possivel fazer alteração!', $action);
  18. die();
  19. }
  20. $data = explode(' ', $object->ini_previsto);
  21. $data2 = explode(' ', $object->fin_previsto);
  22. $object->ini_previsto = $data[0];
  23. $object->fin_previsto = $data2[0];
  24. $object->hora_ini = substr($data[1], 0,5);
  25. $object->hora_fin = substr($data2[1], 0,5);
  26. //-------------------------------------------------------------------
  27. $items = PesAplicacao::where('pes_id', '=', $key)->load();
  28. $this->list_apl->addHeader();
  29. if ($items)
  30. {
  31. foreach($items as $item )
  32. {
  33. $apl = new Aplicacao($item->aplicacao_id);
  34. $detail = new stdClass;
  35. $detail->list_empreendimento = $apl->empreendimento_id;
  36. //este campo depende do onChange para carregar a lista.
  37. $detail->list_aplicacao = $apl->id;
  38. $teste = $this->list_apl->addDetail($detail);
  39. }
  40. $this->list_apl->addCloneAction();
  41. }
  42. else
  43. {
  44. //$this->fieldlist->addHeader();
  45. $this->list_apl->addDetail( new stdClass );
  46. $this->list_apl->addCloneAction();
  47. }
  48. $this->form->setData($object); // fill the form
  49. TTransaction::close(); // close the transaction
  50. }
  51. else
  52. {
  53. $this->form->clear();
  54. }
  55. }
  56. catch (Exception $e) // in case of exception
  57. {
  58. new TMessage('error', $e->getMessage()); // shows the exception error message
  59. TTransaction::rollback(); // undo all pending operations
  60. }
  61. }
  62. public static function onChange($param)
  63. {
  64. if (!empty($param['list_empreendimento'])){
  65. $empField = $param['_field_id'];//nome do field empreendimento
  66. $vet = explode('_', $empField);// apenas o codigo
  67. $empId = $param['_field_value'];//ID do campo empreendimento
  68. $apl_name = "list_aplicacao_".$vet[2];//nome do field aplicacao
  69. TTransaction::open('sqlserver');
  70. $criteria = new TCriteria;
  71. $criteria->add(new TFilter('empreendimento_id', '=', $empId ));
  72. //$criteria->add(new TFilter('status', '=', 1));
  73. $repository = new TRepository('ViewEmpreendimentos');
  74. $aplicacaos = $repository->load($criteria);
  75. $options = array();
  76. foreach ($aplicacaos as $aplicacao){
  77. $options[$aplicacao->id] = $aplicacao->aplicacao;
  78. }
  79. TScript::create("$('#{$apl_name}').html('')");
  80. //carrega a combo
  81. TCombo::reload('form_liberacao', $apl_name, $options, true);
  82. TTransaction::close();
  83. }
  84. }
  85. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


NR

A classe TFieldList é filha de TTable e a função addDetail retorna a linha acrescentada a essa tabela. Assim você consegue capturar os elementos de cada linha:
 
  1. <?php
  2. // onEdit
  3. $row = $this->list_apl->addDetail($detail); // retorna linha da tabela
  4. $componente = $row->get(0)->get(0); // o primeiro get(0) vai retornar o primeiro elemento da linha(td). Depois, com mais um get(0) capturamos o primeiro elemento dessa td, que no caso será o seu primeiro componente adicionado ao fieldlist.
  5. // supondo que $componente = combo
  6. $componente->addItems($seu_array);
  7. ?>
BI

Deu certo, muito obrigado!
RH

Como definir quantidade máxima de linhas TFieldList (addCloneAction)